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

Architectures with 2-bytes (or more) atomic endianness

本文关键字:体系结构 2字节 具有      更新时间:2023-10-16

直到最近,我认为通过指定一个体系结构是big-endian还是little-endian,我们将涵盖大多数系统(除了middle-endian,但这些系统并不常见)。但是,我读到,端序"原子"可以大于字节,以便这些系统:

  • 小端序1字节原子
  • 小端序2字节原子

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

问题:原子等于或大于2的系统有多常见?

附加问题

  • 原子大小是否取决于整数类型(例如uint32_tuint64_t的不同原子)?
  • 我是否有保证,char总是1字节长,甚至在系统上的2字节端序原子?

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

不能保证char正好是8位宽(参见<limits.h>检查数字),但char保证至少是8位宽(以便char[]可以保存UTF-8字符串),sizeof(char)保证是1。如果需要精确的8位宽类型,请使用uint8_t