Ruby 将 64 位 IEEE 754 十六进制转换为双精度
Posted
技术标签:
【中文标题】Ruby 将 64 位 IEEE 754 十六进制转换为双精度【英文标题】:Ruby convert 64 bit IEEE 754 hexadecimal to double 【发布时间】:2013-04-11 17:03:40 【问题描述】:我需要将来自 IMU 的十六进制数据流输出为纬度和高度值。
数据以双精度十六进制字符串的形式出现,我需要将它们输出为十进制值。
我尝试了几个打包和解包值,但最后除了编写自己的函数之外找不到解决方案。
有什么方法可以翻译这个双精度 64 位十六进制字符串:
"4044F33333333333"
到这个小数点:
41.900000000000000
使用打包和解包功能?
是否有任何库能够处理 IEEE 754 数字?
【问题讨论】:
【参考方案1】:["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"]
【讨论】:
对,我只处理了转换的前半部分以上是关于Ruby 将 64 位 IEEE 754 十六进制转换为双精度的主要内容,如果未能解决你的问题,请参考以下文章