首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python -如何格式化大写和两位的十六进制数?

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

Stack Overflow用户
提问于 2018-06-27 09:10:12
回答 1查看 7.7K关注 0票数 4

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

我试着这样做:

代码语言:javascript
复制
x = 0

while(x != 10):
    print('Number '+'{0:x}'.format(int(x)))
    x = x + 1

柜台工作正常。唯一的问题是输出如下所示

代码语言:javascript
复制
 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

我希望它看起来像这样

代码语言:javascript
复制
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

我怎么能这么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-27 09:18:01

这在Format specification Mini-Language中有解释。

获取大写字母的步骤:

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

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

要获取2位数,请执行以下操作:

width是定义最小字段宽度的十进制整数。如果未指定,则字段宽度将由内容决定。

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

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

所以:

代码语言:javascript
复制
print('Number '+'{0:02X}'.format(int(x)))

当我们这样做的时候,这是非常愚蠢的代码。

首先,x已经是一个int,为什么还要在它上面调用int呢?

代码语言:javascript
复制
print('Number '+'{0:02X}'.format(x))

同时,如果要放入format字符串的唯一内容是单个格式说明符,则不需要str.format,只需要format

代码语言:javascript
复制
print('Number ' + format(x, '02X'))

或者,str.format的全部意义在于您可以将多个内容放入一个格式字符串中:

代码语言:javascript
复制
print('Number {:02X}'.format(x))

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

代码语言:javascript
复制
print(f'Number {x:02x}')
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51053227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档