具有 2 字节(或更多)原子字节顺序的架构
Architectures with 2-bytes (or more) atomic endianness
直到最近,我还认为通过指定架构是 big-endian
还是 little-endian
我们将涵盖大多数系统(middle-endian
除外,但这些系统不是很常见)。但是后来,我读到字节顺序 "atomics" 可以大于字节,因此这些系统 :
- 1 字节原子的小端
- 2 字节原子小端
将以不同方式对整数进行编码。
问题:原子数等于或大于二的常见系统有哪些?
其他问题
- 原子大小能否取决于整数类型(例如
uint32_t
和 uint64_t
的不同原子)?
- 即使在具有 2 字节字节序原子的系统上,我是否可以保证
char
始终为 1 字节长?
如果您需要担心机器的特定本机字节顺序,可以使用 ntohl()
和 ntohs()
等函数,或者一次只读取一个字节。
不能保证 char
正好是 8 位宽(请参阅 <limits.h>
来检查数字),但是 char
保证至少是 8 位宽(这样 char[]
可以容纳 UTF-8 字符串)并且 sizeof(char)
保证为 1。如果您需要精确的 8 位宽类型,请使用 uint8_t
.
直到最近,我还认为通过指定架构是 big-endian
还是 little-endian
我们将涵盖大多数系统(middle-endian
除外,但这些系统不是很常见)。但是后来,我读到字节顺序 "atomics" 可以大于字节,因此这些系统 :
- 1 字节原子的小端
- 2 字节原子小端
将以不同方式对整数进行编码。
问题:原子数等于或大于二的常见系统有哪些?
其他问题
- 原子大小能否取决于整数类型(例如
uint32_t
和uint64_t
的不同原子)? - 即使在具有 2 字节字节序原子的系统上,我是否可以保证
char
始终为 1 字节长?
如果您需要担心机器的特定本机字节顺序,可以使用 ntohl()
和 ntohs()
等函数,或者一次只读取一个字节。
不能保证 char
正好是 8 位宽(请参阅 <limits.h>
来检查数字),但是 char
保证至少是 8 位宽(这样 char[]
可以容纳 UTF-8 字符串)并且 sizeof(char)
保证为 1。如果您需要精确的 8 位宽类型,请使用 uint8_t
.