2016-04-28 36 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