繁体   English   中英

Python-如何格式化十六进制数字大写和两位数字?

[英]Python - How do I format a hexadecimal number in uppercase and two digits?

我需要做一个十六进制计数器。

我试图这样做:

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

我该怎么办?

这在Format规范Mini-Language中进行了说明

要获取大写字母:

'x'十六进制格式。 以16为基数输出数字,对9以上的数字使用小写字母。

“ X”十六进制格式。 以16为基数输出数字,对9以上的数字使用大写字母。

要获得2位数字:

width是一个十进制整数,用于定义最小字段宽度。 如果未指定,则字段宽度将由内容确定。

如果未给出明确的对齐方式,则在宽度字段前面加上零( '0' )字符可启用数字类型的符号感知零填充。 这等效于对齐类型为'='填充字符'0' '='

因此,您需要将width设置为2,将fill0 ,将alignment= ,或者更简单地,只需在width之前使用特殊的0前缀。

所以:

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的全部str.format是您可以将多个内容放入一个格式字符串中:

print('Number {:02X}'.format(x))

或者,如果您使用的是Python 3.6或更高版本:

print(f'Number {x:02x}')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM