-1
我有以下的C代码。Printf Hex格式导致错误的输出
char a[] = "\x7f\x80";
printf("0x%02x\n",a[0]);
printf("0x%02x",a[1]);
应该打印,
0x7f
0x80
但是我得到以下?
0x7f
0xffffff80
什么样的变化我必须做出让输出0x7f的0x80的?
谢谢,
我有以下的C代码。Printf Hex格式导致错误的输出
char a[] = "\x7f\x80";
printf("0x%02x\n",a[0]);
printf("0x%02x",a[1]);
应该打印,
0x7f
0x80
但是我得到以下?
0x7f
0xffffff80
什么样的变化我必须做出让输出0x7f的0x80的?
谢谢,
使用正确的类型和转换说明:
unsigned char a[] = "\x7f\x80";
printf("0x%02hhx\n",a[0]);
printf("0x%02hhx",a[1]);
转换说明x
需要一个无符号类型,长度改性剂hh
用于unsigned char
。
'(unsigned char)a [1]' –
非常感谢!我实际上尝试过printf(“0x%02x \ n”,(unsigned)a [0])。 –
你也可以做'“0x%02hhx \ n”'。正如迈克尔所言, –