2013-04-11 127 views
2

我需要將IMU中的十六進制數據流輸出爲緯度長度和高度值。Ruby將64位IEEE 754十六進制轉換爲雙精度

數據以雙精度十六進制字符串形式出現,我需要將它們輸出爲十進制值。

我嘗試了幾個包並解壓縮值,但最終無法找到解決方案,除了編寫自己的函數。

有翻譯這雙精度64位十六進制字符串的任何方式:

"4044F33333333333" 

這個十進制:

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

對,我只處理了轉換的前半部分 – 2013-04-11 17:23:13

相關問題