-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」'。正如邁克爾所言, –