如何将 64 位二进制字符串转换为 ruby 中的双浮点数?

How to convert 64 bit binary string to a double float in ruby?

我想知道如何在 ruby 中将 64 位二进制字符串转换为双浮点数。我的字符串如下:

binaryString = "0011111111110000000000000000000000000000000000000000000000000000"

使用在线转换器(http://www.binaryconvert.com/convert_double.html?)我知道该值应该是 1.0。但是,我试图使用 ruby 解包转换为双精度,但没有得到正确的结果。

double_value = binaryString.unpack("G")

给我 double_value = 1.3983819593719592e-76

我尝试了其他指令,如 "F" 和 "D",但 none 产生了正确的结果。

知道我做错了什么吗?感谢您的帮助!

unpack 需要二进制数据,因此您必须先使用 B:

pack 您的位串
b = '0011111111110000000000000000000000000000000000000000000000000000'

[b].pack('B*').unpack1('G')
#=> 1.0