任何方式终止十六进制条目而不使用空格

时间:2017-05-06 17:17:43

标签: c non-ascii-characters keil

KEIL 9.55

这有效:

unsigned char code ID_Data_02[9]="\x02 1234567";

但我真正想要的是:

unsigned char code ID_Data_02[8]="\x021234567";

在第一种情况下,我只是使用*(p+0)进行传输,然后是*(p+2),并忽略描述十六进制与ASCII组件的空格。

任何人都知道更整洁的事情吗?

K& R定义\x以表示一个或多个十六进制char s - 尝试\2x02 - 似乎假设十六进制无限期地继续,直到非0遇到1}}到F

2 个答案:

答案 0 :(得分:6)

使用字符串连接

unsigned char code ID_Data_02[8] = "\x02" "1234567";

请注意,ID_Data_02 不是字符串:它没有空间用于终止零字节。与大多数str *函数一起使用它会调用UB。

答案 1 :(得分:4)

ANSI C将相邻字符串连接成一个字符串,所以

unsigned char code ID_Data_02[8]="\x02" "1234567";

做你想做的事