如何将hex值分配到char类型而不使用null终止?

我想将hex值分配给char类型。 由于null( \x00 )字符,我无法分配所有hex值。 只能分配4个字符。 如何在(char*)data分配所有hex值?

 unsigned char data[100]; sprintf((char*)data,"\x30\x29\x02\x01\x00\x04\x06\x70\x75\x62\x6c\x69\x63\xa0"); 

在C中,代码不能使用一个赋值分配多个数组值。 代码可以初始化, 这是一个很好的答案 。

使用循环或memcpy() 分配多个值。

 unsigned char data[100]; #define SOURCE_DATA ("\x30\x29\x02\x01\x00\x04\x06\x70\x75\x62\x6c\x69\x63\xa0") #define SOURCE_SIZE (sizeof SOURCE_DATA - 1) memcpy(data, SOURCE_DATA, SOURCE_SIZE); 

由于您在编译时可以使用所有hex数,因此可以使用花括号初始值设定项而不是字符串文字来分配它们:

 unsigned char data[] = { 0x30, 0x29 ,0x02, 0x01, 0x00, 0x04, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0xa0 };