如何解决readBin无法产生预期的输出
我需要将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获取pi?
解决方法
在读取多字节数字时,需要注意确定字节顺序的“字节序”。此原始值似乎采用“大”字节序格式,不得为系统上的默认值。试试
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,0x18))),'double')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。