我认为
f"0x{number:04X}"
会产生一个四位数的十六进制数字。但我最近发现事实并非如此:
f"0x{13544123:04x}" = "0xceaabb"
有 6 位数字。我在这里做错了什么?
这里要理解的关键是,
f 字符串格式中的
:04x
表示至少四位数字,但不完全是四位数字。如果相关数字大于指定的位数,它将根据需要显示尽可能多的位数。
我认为如果我们尝试以 10 为基数用四位数字表示两个数字,会更容易理解这一点:
x = 999999
y = 1
f"y is {y:04d} and x is {x:04d}"
# 'y is 0001 and x is 999999'
1
变为
000
。然而,没有办法用四位数字来表达
999999
。同样,以 10 为基数的
13544123
是十六进制的
0xceaabb
,无法用四位数字表示。