繁体   English   中英

如何使用R从二进制文件中读取64位二进制补码整数?

[英]How to read a 64-bit two's-complement integer from a binary file using R?

我收集到,要在RI中表示一个64位整数,需要使用一个double。 很好,但是我需要从二进制文件中读取这样的整数,该整数将以Big Endian 64位二进制补码(java长)存储。

我当然可以像这样读取4字节块中的两个有符号整数

a = readBin(file, integer(), size=4, endian="big")
b = readBin(file, integer(), size=4, endian="big")

但是,如何将它们结合到R中以获得所需的两倍?

绝对最好将它读为两个整数而不是一个双精度整数。 小数值负数(例如-1)的2补码64位表示形式是NaN的两倍,对它们进行算术运算可能无法满足您的需要。

首先取出2的补码问题。 我将假设a是更重要的一半。 如果它是负数,请注意事实并取整数的2的补码。 翻转所有位,然后将带有b进位加到a

接下来,将a转换为双精度,乘以2 ^ 32,然后加上b

如果原始值为负,则取反结果。

请注意,如果原始数字太大,您可能无法获得确切答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM