为什么在Python中用“%x”进行转换不会产生前缀为0x的结果?

2024-04-24 03:03:39 发布

您现在位置:Python中文网/ 问答频道 /正文

# 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。为什么?在


Tags: oftoformatformakethatusefunction
1条回答
网友
1楼 · 发布于 2024-04-24 03:03:39

如果需要前缀,则使用了错误的方法;所提供的格式仅将整数直接转换为十六进制,而不使用任何前缀或填充。在

可以使用^{} function返回前缀为0x且没有填充的十六进制表示:

>>> hex(34)
'0x22'

或者您可以使用^{} function#x格式:

^{pr2}$

#表示需要前缀。您也可以要求它提供0填充,但您需要指定一个字段宽度,该宽度包含前缀:

>>> format(34, '#06x')
'0x0022'

这里,06将字段填充为6个字符,包括前缀的2个字符。在

如果您唯一的选择是使用^{} string formatting operation,您仍然可以使用相同的技巧

>>> '%#x' % 34
'0x22'

填充仍然可用,但有相同的宽度警告:

>>> '%#06x' % 34
'0x0022'

相关问题 更多 >