我应该使用什么类型的C enum的二进制表示?

时间:2010-08-18 06:28:55

标签: c enums binary representation

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

* PS '二进制表示'表示字节数组。我想将枚举值序列化为socket以与其他程序进行交互。

3 个答案:

答案 0 :(得分:2)

编译器可以使用int来表示enum类型,如果long不足以保存所有值,则使用int enum

如果您知道所有enum值都可以由int表示,那么您可以安全地使用int作为enum值的二进制表示。< / p>

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

重新发明轮子很少会产生更好的效果。

相关问题