我有以下C代码。
char a[] = "\x7f\x80";
printf("0x%02x\n",a[0]);
printf("0x%02x",a[1]);
它应该打印,
0x7f
0x80
但是我得到了关注?
0x7f
0xffffff80
我必须做出哪些更改才能获得输出 0x7f 0x80 ?
谢谢,
答案 0 :(得分:3)
使用正确的类型和转换说明符:
unsigned char a[] = "\x7f\x80";
printf("0x%02hhx\n",a[0]);
printf("0x%02hhx",a[1]);
转化说明符x
需要无符号类型,长度修饰符hh
用于unsigned char
。