如何在Ruby中将64位二进制字符串转换为双精度浮点数?

时间:2018-06-21 16:24:10

标签: ruby floating-point binary unpack

我想知道如何将64位二进制字符串转换为ruby中的double float。我拥有的字符串如下:

binaryString = "0011111111110000000000000000000000000000000000000000000000000000"

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

double_value = binaryString.unpack("G")

给我double_value = 1.3983819593719592e-76

我尝试了其他指令,例如“ F”和“ D”,但均未产生正确的结果。

有什么主意我做错了吗?感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

unpack需要二进制数据,因此您必须首先使用pack B的位字符串:

b = '0011111111110000000000000000000000000000000000000000000000000000'

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