十六进制枚举或整数(ASCII)枚举来填充字节数组?

Posted

技术标签:

【中文标题】十六进制枚举或整数(ASCII)枚举来填充字节数组?【英文标题】:Hexadecimal enumeration OR integer (ASCII) enumeration to fill a byte array with? 【发布时间】:2014-10-20 17:34:56 【问题描述】:

我需要通过可能的枚举来填充c语言中的字节数组。

这是我声明字节数组的方式:

unsigned char byteArray[6];

现在我犹豫我的枚举是否应该看起来像 MyEnum1MyEnum2

enum MyEnum1  A1 = 0, B1 = 1, C1 = 2;
enum MyEnum2  A2 = 0x00, B2 = 0x01, C2 = 0x02; 

目的是这样的:

byteArray[0]=A1;
byteArray[1]=B1;
byteArray[2]=C1;
byteArray[3]=A2;
byteArray[4]=B2;
byteArray[5]=C2;

那么,对于我的枚举是否应该包含十六进制或整数或其他类型的数据,是否有任何建议?

谢谢!

【问题讨论】:

【参考方案1】:

在您的情况下,无论您将如何组织您的enum。两种方法都可以,结果是一样的。

【讨论】:

感谢您的回答。 +1【参考方案2】:

没关系。你的两个枚举:

enum MyEnum1  A1 = 0, B1 = 1, C1 = 2;
enum MyEnum2  A2 = 0x00, B2 = 0x01, C2 = 0x02; 

严格等价,就像int i = 0x5 严格等价于int i = 5。如果您想使用十进制或十六进制表示您的常量,这取决于您。

顺便说一句,而不是:

unsigned char byteArray[6];

你应该有:

enum MyEnum1 byteArray[6];

【讨论】:

感谢您的回答。 +1

以上是关于十六进制枚举或整数(ASCII)枚举来填充字节数组?的主要内容,如果未能解决你的问题,请参考以下文章

使用隐式枚举字段来表示数值是一种不好的做法吗?

如何将 8 字节十六进制枚举值添加到无符号字符指针?

LQ0005 数的分解枚举+进制

LQ0005 数的分解枚举+进制

枚举占多少字节?

ASCII 值为0x8c的字符, 定义成char时, 被转换成十六进制的整数0xff8c 。