Python:格式“04X”产生超过 4 个十六进制数字

问题描述 投票:0回答:1

我认为

f"0x{number:04X}"
会产生一个四位数的十六进制数字。但我最近发现事实并非如此:

f"0x{13544123:04x}" = "0xceaabb"
有 6 位数字。我在这里做错了什么?

python format
1个回答
0
投票

这里要理解的关键是 f 字符串格式中的

:04x
表示至少 4 位数字,但不完全是 4 位数字。如果您要转换为十六进制的数字大于 4 位数字可以表示的数字,它将根据需要显示尽可能多的数字。

我认为使用以 10 为基数的整数更容易理解这一点:

x = 999999
y = 1
f"y is {y:04d} and x is {x:04d}"
# 'y is 0001 and x is 999999'

显然无法用四位数字来表达

999999
。同样,您不能用四个十六进制数字表示
13544123

© www.soinside.com 2019 - 2024. All rights reserved.