>> print(f'-6ren">
gpt4 book ai didi

python - #X 格式说明符真的应该使 "0x"前缀大写吗?

转载 作者:行者123 更新时间:2023-12-03 14:46:23 31 4
gpt4 key购买 nike

我正在尝试使用 #X 格式说明符使用大写字母作为“数字”打印十六进制值,同时自动添加通常的 0x 前缀。例如,十进制 10 应表示为 0xA
但是,该说明符似乎并非如此:

>>> print(f'{10:#X}')
0XA
>>> '{:#X}'.format(10)
'0XA'
看起来 X 修饰符使 整个 数字的字符串表示(包括 0x 前缀)通过 str.upper 而不是“数字部分”。我认为这很公平,但是在检查 Format Specification Mini-Language 之后,它看起来可能不是预期的结果(或者,至少,它没有明确记录)。以下是相关位:

The '#' option causes the "alternate form" to be used for the conversion. [...] For integers, when [...] hexadecimal output is used, this option adds the prefix [...] '0x' to the output value.

[...]

The available integer presentation types are:

Type Meaning
[...] [...]
'x' Hex format. Outputs the number in base 16, using lower-case letters for the digits above 9.
'X' Hex format. Outputs the number in base 16, using upper-case letters for the digits above 9.
[...] [...]

这似乎意味着大写字母应该只用于非十进制的十六进制数字( abcdef ),因此不应关注 x (来自 0x );那正确吗?

最佳答案

正如您已经注意到的,#X 将所有内容都设为大写,而 #x 将所有内容设为小写。如果您希望 0x 较低而其余部分为大写,那么您可以尝试以下操作:

# will print 0xA
print(f'{10:#X}'.replace('0X', '0x'))
在我的观点中,将 0x 中的 x 大写是愚蠢的,他们不应该以这种方式实现它,但它就是这样......
编辑:
您可以删除 # 然后它会完全删除 0x,然后您可以在格式字符串中手动添加 0x,这是我认为最好的方法:
print(f"0x{10:X}")

关于python - #X 格式说明符真的应该使 "0x"前缀大写吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66223870/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com