【问题标题】:How to handle multibyte numbers?如何处理多字节数?
【发布时间】:2013-07-05 11:17:45
【问题描述】:

我正在尝试从文件中读取二进制数据。在字节 10-13 处是一个小端二进制编码的数字,我试图仅使用偏移量为 10 且“大小”为 4 的信息来解析它。

我知道我将不得不做一些二进制移位操作,但我不确定哪个字节去哪里,“多远”以及应该转移到哪里。

【问题讨论】:

  • 只有在大端机器上才需要进行字节移位,否则就可以使用。

标签: c endianness


【解决方案1】:

如果您确定数据是小端,您可以执行以下操作:

int32 value = data[10] | (data[11] << 8) | (data[12] << 16) | (data[13] << 24);

这为您提供了一个可移植的解决方案,以防您的代码在两个字节序机器上运行。

【讨论】:

  • 是的,它同时工作。如前所述,我不确定将其转移到哪里以及转移多远
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多