%02x与%2x 之间的区别
输出最小宽度
用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0(当最小宽度数值以0开头时)。
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