有人可以告诉我如何在Ruby中将32位二进制字符串转换为IEEE 754浮点值吗?
例如,二进制字符串" 01000001100101110011001100110011" (0x41973333)应该转换为18.9,但我无法弄清楚如何使用Ruby来做到这一点。
我试图获得相同的值:https://www.h-schmidt.net/FloatConverter/IEEE754.html
感谢。
答案 0 :(得分:4)
那是一个有趣的人!
["01000001100101110011001100110011"].pack('B*').unpack('g').first
#=> 18.899999618530273
[18.9].pack('g').unpack('B*').first
#=> "01000001100101110011001100110011"
'g'
是:
g | Float | single-precision, network (big-endian) byte order
'B*'
是多个:
B | String | bit string (MSB first)