常见%02x,那么与%2x有什么区别呢?
X 表示以十六进制形式输出,02 表示不足两位,前面补0输出;如果超过两位,则实际输出
举例:
printf("%02X", 0x345); // 345
printf("%02X", 0x6); // 06
而如果直接写为 %2x,数据不足两位时,实际输出,即不额外补0输出; 如果超过两位,则实际输出。
printf("%2X", 0x345); // 345
printf("%2X", 0x6); // 6
例子:
#include <stdio.h>
int main()
{
int i = -20;
for(i = -20; i < 21; i++)
{
printf("%2x\n", i);
printf("%02x\n", i);
}
return 0;
}
结果:
ffffffec
ffffffec
ffffffed
ffffffed
ffffffee
ffffffee
ffffffef
ffffffef
fffffff0
fffffff0
fffffff1
fffffff1
fffffff2
fffffff2
fffffff3
fffffff3
fffffff4
fffffff4
fffffff5
fffffff5
fffffff6
fffffff6
fffffff7
fffffff7
fffffff8
fffffff8
fffffff9
fffffff9
fffffffa
fffffffa
fffffffb
fffffffb
fffffffc
fffffffc
fffffffd
fffffffd
fffffffe
fffffffe
ffffffff
ffffffff
0
00
1
01
2
02
3
03
4
04
5
05
6
06
7
07
8
08
9
09
a
0a
b
0b
c
0c
d
0d
e
0e
f
0f
10
10
11
11
12
12
13
13
14
14