字节顺序如何影响 C++ 中的枚举值?

发布于 2024-09-30 14:52:40 字数 111 浏览 5 评论 0原文

字节顺序如何影响 C++ 中的枚举值?

枚举的大小是否取决于枚举的数量,因此有些枚举是 1 字节,而其他枚举是 2 或 4 字节?

如何将枚举值从主机字节顺序放入网络字节顺序?

How does endianness affect enumeration values in C++?

Is the size of an enum dependent upon how many enumerations there are and thus some enums are 1 byte, while others are 2 or 4 bytes?

How do I put an enumeration value into network byte order from host byte order?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

☆獨立☆ 2024-10-07 14:52:40

字节序对枚举的影响并不比对其他整数类型的影响多或少。

对大小的唯一保证是枚举必须能够保存 int 的值;编译器可以根据定义的成员自由选择实际大小(免责声明:对于 C 来说肯定是这种情况,对于 C++ 不是 100% 确定;我会检查...)

Endianness affects enumerations no more or less than it does other integer types.

The only guarantee on size is that it must be possible for an enum to hold values of int; the compiler is free to choose the actual size based on the defined members (disclaimer: this is certainly the case for C, not 100% sure for C++; I'll check...)

剪不断理还乱 2024-10-07 14:52:40

枚举取决于编译器。它们可以是 1、2 或 4 个字节(请参阅此处)。它们应该具有与其所使用的平台相同的字节序。

要将枚举值放入特定的字节顺序,您需要知道您所在的系统是什么以及网络期望什么。然后像对待 int 一样对待。请参阅此处获取帮助关于转换。

Enums depend on the compiler. They can be an 1, 2, or 4 bytes (see here). They should have the same endianness as the platform they are used on.

To put an enum value into a specific byte order you would need to know what the system you are on is and what the network expect. Then treat as you would an int. See here for help on conversions.

笑红尘 2024-10-07 14:52:40
  1. 同样,它也会影响其他一切。
  2. 编译器可以自由选择所需的最小空间。
  3. htons(),或者如果您知道自己有超过 64k 个值,则使用 htonl()。
  1. Same way it affects everything else.
  2. The compiler is free to choose the minimum required space.
  3. htons(), or if you know you have more than 64k values, htonl().
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文