我需要做一个十六进制计数器。
我试图这样做:
x = 0
while(x != 10):
print('Number '+'{0:x}'.format(int(x)))
x = x + 1
计数器正在工作。唯一的问题是输出看起来像这样
0 5 a f 14 19
1 6 b 10 15 1a
2 7 c 11 16 1b
3 8 d 12 17 1c
4 9 e 13 18 1d
我希望它看起来像这样
00 05 0A 0F 14 19
01 06 0B 10 15 1A
02 07 0C 11 16 1B
03 08 0D 12 17 1C
04 09 0E 13 18 1D
我该怎么办?
答案 0 :(得分:2)
这在Format specification Mini-Language中有解释。
要获取大写字母:
'x'十六进制格式。输出基数为16的数字,对9以上的数字使用小写字母。
“ X”十六进制格式。以9为底的数字使用大写字母输出以16为底的数字。
要获取2位数字:
width 是一个十进制整数,用于定义最小字段宽度。如果未指定,则字段宽度将由内容决定。
如果未给出明确的对齐方式,则在宽度字段前加零(
'0'
)字符可为数字类型启用符号可识别的零填充。这等效于 alignment 类型为'0'
的{{1}}的 fill 字符。
因此,您需要将'='
设置为2,将width
设置为fill
,将0
设置为alignment
,或更简单地,只需在=
之前使用特殊的0
前缀即可。
所以:
width
虽然我们正在这么做,但这是非常愚蠢的代码。
首先,print('Number '+'{0:02X}'.format(int(x)))
已经是一个x
,那么为什么要在其上调用int
?
int
同时,如果您要放入print('Number '+'{0:02X}'.format(x))
字符串中的唯一内容是单一格式说明符,则不需要format
,只需str.format
:
format
或者,print('Number ' + format(x, '02X'))
的全部要点是,您可以将多个内容放入一个格式字符串中:
str.format
或者,如果您使用的是Python 3.6或更高版本:
print('Number {:02X}'.format(x))