2013-04-11 6 views
2

IMU의 16 진수 데이터 스트림을 long long 및 height 값으로 출력해야합니다.루비 변환 64 비트 IEEE 754 16 진수를 double으로 변환

데이터는 배정도 16 진수 문자열로 제공되므로 10 진수 값으로 출력해야합니다.

필자는 여러 팩을 풀고 값을 풀려고했지만 결국에는 내 자신의 기능을 작성하는 것 외에는 해결책을 찾지 못했습니다.

"4044F33333333333" 

이 소수로 :

이 배정 밀도 64 비트 16 진수 문자열을 번역하는 방법이 있나요

41.900000000000000 

팩을 사용하고 기능을 풀고?

IEEE 754 번호를 처리 할 수있는 라이브러리가 있습니까?

답변

6
["4044F33333333333"].pack('H16').unpack('G').first 
=> 41.9 

# broken down to steps, showing reversability 
["4044F33333333333"].pack('H16') 
=> "@D\xF333333" 
"@D\xF333333".unpack('G') 
=> [41.9] 
[41.9].pack('G') 
=> "@D\xF333333" 
"@D\xF333333".unpack('H16') 
=> ["4044f33333333333"] 
+0

맞아요, 저는 전환의 첫 번째 절반 만 처리했습니다. –