2016-04-28 814 views
-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的

谢谢,

+3

'(unsigned char)a [1]' –

+0

非常感谢!我实际上尝试过printf(“0x%02x \ n”,(unsigned)a [0])。 –

+1

你也可以做'“0x%02hhx \ n”'。正如迈克尔所言, –

回答

3

使用正确的类型和转换说明:

unsigned char a[] = "\x7f\x80"; 
printf("0x%02hhx\n",a[0]); 
printf("0x%02hhx",a[1]); 

转换说明x需要一个无符号类型,长度改性剂hh用于unsigned char