2

据我所知,C 枚举是无符号整数,但这可能因实现而异。我应该为二进制表示中的枚举使用什么类型?

*PS“二进制表示”表示字节数组。我想将枚举值序列化到套接字以与其他程序互操作。

4

3 回答 3

2

由编译器决定使用 anint来表示一个enum类型,或者long如果 anint不足以容纳enum.

如果您知道所有enum值都可以用 表示int,那么您可以安全地int用作值的二进制表示enum

于 2010-08-18T06:38:42.377 回答
1

由于枚举只是设置整数的奇特方式,因此您应该选择一个足够大的整数类型来存储所有枚举值。通常,一个 char 就足够了,并且没有序列化问题。但我会选择短期或长期。序列化时,我会使用ntohs/htonsor ntohl/htonl(参见他们的手册页)来始终确保序列化是网络字节顺序,反序列化是主机字节顺序。

于 2010-08-18T06:45:52.703 回答
0

怎么样xdr- 用于外部数据表示的库例程?

重新发明轮子很少能产生更好的结果。

于 2010-08-18T06:41:59.367 回答