readBin 没有产生预期的输出

readBin doesn't produce expected output

我需要将 IEEE-754 格式转换为双精度浮点数。

根据 https://babbage.cs.qc.cuny.edu/IEEE-754.old/64bit.html 十六进制表示 400921fb54442d18 应该大致为 pi,3.1415...

但是:

> readBin(as.raw(c(0x40, 0x09, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18)), 'double')
[1] 3.207376e-192

如何在 R 中从 400921fb54442d18 获取圆周率?

读取多字节数字时,需要注意决定字节顺序的“字节顺序”。这个原始值似乎是“大”端格式,它不能是您系统上的默认值。尝试

readBin(as.raw(c(0x40, 0x09, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18)), 'double', endian="big")
# [1] 3.141593

使用小端格式,这些字节将被反转。所以你也可以做

# assuming .Platform$endian returns "little" (system default)
readBin(rev(as.raw(c(0x40, 0x09, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18))), 'double')