具有2字节(或更多)原子字节序的体系结构

时间:2015-10-18 03:47:25

标签: c++ c integer endianness word

直到最近,我认为通过指定架构是big-endian还是little-endian,我们将覆盖大多数系统(middle-endian除外),但这些系统并不常见)。但后来,我读到字节序“原子”可能大于字节,所以这些系统:

  • 带有1个字节原子的小端
  • 带有2个字节原子的小端

将以不同的方式编码整数。

问题:原子论等于或大于2的常见系统是什么?

其他问题

  • 原子大小是否取决于整数的类型(例如uint32_tuint64_t的不同原子?)
  • 即使在具有2字节字节序原子的系统上,我是否可以保证char始终为1字节长?

1 个答案:

答案 0 :(得分:1)

如果您需要担心机器的特定本机字节顺序,可以使用ntohl()ntohs()等功能,或者一次只读取一个字节。

无法保证char正好是8位宽(请参阅<limits.h>检查数字),但char保证至少为8位宽(所以char[]可以保存UTF-8字符串)并且sizeof(char)保证为1.如果您需要精确的8位宽类型,请使用uint8_t