在C中打印十六進(jìn)制字符我正在嘗試讀取一行字符,然后打印出字符的十六進(jìn)制等效字符。例如,如果我有一個(gè)字符串,"0xc0 0xc0 abc123"前兩個(gè)字符是c0十六進(jìn)制,其余字符是abc123ASCII,那么我應(yīng)該得到c0 c0 61 62 63 31 32 33但是,printf使用%x給了我ffffffc0 ffffffc0 61 62 63 31 32 33如何在不使用的情況下獲得我想要的輸出"ffffff"?為什么只有c0(和80)有ffffff,但沒有其他字符?
1 回答

繁花如伊
TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
實(shí)際上,有類型轉(zhuǎn)換為int。您還可以使用%hhx說明符強(qiáng)制類型為char。
printf("%hhX", a);
在大多數(shù)情況下,您還需要設(shè)置最小長度以使用零填充第二個(gè)字符:
printf("%02hhX", a);
ISO / IEC 9899:201x說:
7長度修飾符及其含義為:hh指定以下d,i,o,u,x或X轉(zhuǎn)換說明符適用于signed char或unsigned char參數(shù)(該參數(shù)將根據(jù)整數(shù)提升進(jìn)行提升,但在打印前,其值應(yīng)轉(zhuǎn)換為有符號字符或未簽名字符); 或者說是以下
- 1 回答
- 0 關(guān)注
- 2517 瀏覽
添加回答
舉報(bào)
0/150
提交
取消