为什么要使用“转换%x";在Python中,是否不生成带有0x前缀的结果?
我的答案返回22而不是0x22。为什么?如果您想要前缀,那么您使用了错误的方法;您提供的格式仅将整数直接转换为十六进制,无任何前缀或填充 可以使用返回带有为什么要使用“转换%x";在Python中,是否不生成带有0x前缀的结果?,python,Python,我的答案返回22而不是0x22。为什么?如果您想要前缀,那么您使用了错误的方法;您提供的格式仅将整数直接转换为十六进制,无任何前缀或填充 可以使用返回带有0x前缀且无填充的十六进制表示形式: # Write a function that does a decimal to hexadecimal conversion. # Hint: Make use of "%x" for hexadecimal format. def dec2hex(num): return "%x" % num
0x
前缀且无填充的十六进制表示形式:
# Write a function that does a decimal to hexadecimal conversion.
# Hint: Make use of "%x" for hexadecimal format.
def dec2hex(num):
return "%x" % num
或者您可以使用和#x
格式:
>>> hex(34)
'0x22'
#
表示您需要前缀。您也可以要求它提供0填充,但需要指定包含前缀的字段宽度:
>>> format(34, '#x')
'0x22'
这里,06
将字段填充为6个字符,包括前缀2
如果您唯一的选择是使用,您仍然可以使用相同的技巧
>>> format(34, '#06x')
'0x0022'
并且填充仍然可用,但具有相同的宽度警告:
>>> '%#x' % 34
'0x22'
你为什么还要别的
0x%x
如果您想要前缀……但是说真的——当Y是x的设计用途时,形式为“x为什么做Y?”的问题不是很容易回答。人们唯一能给出的答案是“因为它就是这样建造的”。现在,可以肯定的是,我们可以解释为什么以这种方式构建它是明智的,但这有点离题了。你的书怎么说?我需要它说0x22,你能告诉我哪里出了问题吗?@Liz4rd,试过0x%02x
?如果您阅读了格式字符串的精细手册…那就没有使用提示。答案需要使用提示。@Liz4rd:yay用于任意编码练习。我为您提供了所有选项。无法使用前缀0x%x,因为当0为num时,我返回0x0而不是0x00@Liz4rd:也许您想指定需要填充?@Liz4rd:但您没有指定需要为整数0生成0x00
。这意味着您需要0-padding。
>>> '%#06x' % 34
'0x0022'