如何将十六进制值分配到char类型而不使用null终止?

时间:2016-10-06 17:55:40

标签: c

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

中分配所有十六进制值
unsigned char data[100];
sprintf((char*)data,"\x30\x29\x02\x01\x00\x04\x06\x70\x75\x62\x6c\x69\x63\xa0");

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

在C中,代码不能分配具有一个赋值的数组的多个值。代码可以按this good answer初始化。

使用循环或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);