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')
我需要将 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')