2017-04-27 105 views
0

我是TCP上的TCP-IP通信。 我有特定的数据包进行查询,然后我收到一个响应基于此。 我的包基本上是一个字符阵列,我转换为字符串是这样的:如何将枚举类型映射到字符数组?

unsigned char array1 []={0,132,0,0,0,6,84,5,0,1,255,0}; 
std::string load_seqInit (array1, array1 + sizeof array1/sizeof array1[0]); 

但是,我想单独地存储这些阵列作为枚举值。这样我就可以调用枚举类型,它将映射到我各自的数组。

enum packets{ 
    LOAD, 
    READ, 
    RESET, 
    UNLOAD  
} 

所以也许当我打电话枚举类型LOAD它将指向包:

unsigned char array1 []={0,132,0,0,0,6,84,5,0,1,255,0}; 

然后我可以枚举只是转换为字符串,并与我的查询和响应进行。

回答

0

如果阵列8个字节的大小,你可以这样做:

class enum packets : unsigned long { 
    LOAD = 0x1234567812345678, // the hex representation of the array 
    ... 
} 

如果他们没有,你可以用一个比较幼稚的实现使用std::map<packets, array[]>从一个枚举值数组映射去。

+0

我的数组是12个字节。任何链接建议,我可以查找映射@ytoledano –