【发布时间】:2013-07-05 11:17:45
【问题描述】:
我正在尝试从文件中读取二进制数据。在字节 10-13 处是一个小端二进制编码的数字,我试图仅使用偏移量为 10 且“大小”为 4 的信息来解析它。
我知道我将不得不做一些二进制移位操作,但我不确定哪个字节去哪里,“多远”以及应该转移到哪里。
【问题讨论】:
-
只有在大端机器上才需要进行字节移位,否则就可以使用。
标签: c endianness
我正在尝试从文件中读取二进制数据。在字节 10-13 处是一个小端二进制编码的数字,我试图仅使用偏移量为 10 且“大小”为 4 的信息来解析它。
我知道我将不得不做一些二进制移位操作,但我不确定哪个字节去哪里,“多远”以及应该转移到哪里。
【问题讨论】:
标签: c endianness
如果您确定数据是小端,您可以执行以下操作:
int32 value = data[10] | (data[11] << 8) | (data[12] << 16) | (data[13] << 24);
这为您提供了一个可移植的解决方案,以防您的代码在两个字节序机器上运行。
【讨论】: