直到最近,我认为通过指定架构是 big-endian
还是 little-endian
我们可以涵盖大多数系统(除了 middle-endian
但这些系统不是很常见)。但是后来,我读到字节顺序“原子”可以大于字节,因此这些系统:
- 1 字节原子的小端
- 2 字节原子的小端
将以不同的方式编码整数。
问题:原子数等于或大于二的常见系统有多常见?
其他问题
- 原子大小能否取决于整数的类型(例如,
uint32_t
和uint64_t
的不同原子)? - 即使在具有 2 字节字节序原子的系统上,我是否可以保证
char
始终为 1 字节长?
最佳答案
如果您需要担心机器的特定 native 字节顺序,可以使用 ntohl()
等函数和 ntohs()
,或者一次只读取一个字节。
不能保证 char
恰好是 8 位宽(查看 <limits.h>
以检查数字),但是 char
保证至少为 8 位宽(以便 char[]
可以容纳 UTF-8 字符串)和 sizeof(char)
保证为 1。如果您需要精确的 8 位宽类型,请使用 uint8_t
.
关于c++ - 具有 2 字节(或更多)原子字节顺序的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33194086/