c++ - 具有 2 字节(或更多)原子字节顺序的架构

标签 c++ c integer endianness word

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

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

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

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

其他问题

  • 原子大小能否取决于整数的类型(例如,uint32_tuint64_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/

相关文章:

c - 使用 gcc 编译时总线错误

c - 如何计算给定数组中 '0-6' 之间的随机数打印的次数?

Javascript 在将数字相加时删除小数

c++ - PacketReceived/Sec 值非常高

c++ - 错误:'std::cout 中的 'operator<<"不匹配

c++ - 当在某些非 C++ 程序中使用 C++ 代码时,C++ 运行时调用 terminate() 是否为 "legal"?

c - 如何在给定的数字集合中找到第二大元素?

python - 使用 Python 列表推导计算列表中的正整数元素

python - 在python中 float 为整数

c++ - 空 shared_ptr 的语义