我想将十六进制值分配给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");
答案 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);