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

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

我认为

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

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

python number-formatting
1个回答
0
投票

这里要理解的关键是,

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
,无法用四位数字表示。

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