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
。
答案 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";
做你想做的事