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

如何在ruby中将64位二进制字符串转换为双浮点?,ruby,floating-point,binary,unpack,Ruby,Floating Point,Binary,Unpack,我想知道如何在ruby中将64位二进制字符串转换为双浮点。我拥有的字符串如下所示: binaryString = "0011111111110000000000000000000000000000000000000000000000000000" 使用在线转换器(?)我知道该值应为1.0。然而,我试图使用ruby解包将其转换为double,但没有得到正确的结果 double_value = binaryString.unpack("G") 给我双_值=1.3983819593719592e-

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

binaryString = "0011111111110000000000000000000000000000000000000000000000000000"
使用在线转换器(?)我知道该值应为1.0。然而,我试图使用ruby解包将其转换为double,但没有得到正确的结果

double_value = binaryString.unpack("G")
给我双_值=1.3983819593719592e-76

我尝试过其他指令,如“F”和“D”,但都没有得到正确的结果


你知道我做错了什么吗?谢谢你的帮助

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

b = '0011111111110000000000000000000000000000000000000000000000000000'

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

大概
binaryString
是一个字符串,所以您需要在右边加引号。(如前所述,
binaryString
是一个整数,其数字都是零和一,其两个前导零没有意义)如果它是一个字符串,为什么不使用它的整数值,
binaryString.to#i(2)=>460718241880017408
?您需要编辑问题以更正或澄清。感谢您的回复和建议。我添加了引号以表明binaryString实际上是一个字符串。我没有使用整数值,因为我知道binaryString正确地表示每个在线转换器1.0的双精度值。我试图让ruby转换到正确的值。我想用某种方法让ruby从给定的二进制字符串中获得1.0的收益率。谢谢你的帮助!