2013-04-11 126 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

相关问题