Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么要使用“转换%x";在Python中,是否不生成带有0x前缀的结果?_Python - Fatal编程技术网

为什么要使用“转换%x";在Python中,是否不生成带有0x前缀的结果?

为什么要使用“转换%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

我的答案返回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
或者您可以使用和
#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'