Python中的整数到十六进制转换

Posted

技术标签:

【中文标题】Python中的整数到十六进制转换【英文标题】:Integer to Hexadecimal Conversion in Python 【发布时间】:2015-04-23 10:09:39 【问题描述】:
a = 1
print hex(a)

上面给了我输出:0x1

如何将输出改为0x01

【问题讨论】:

Python string formatting的可能重复 【参考方案1】:
print "0x%02x"%a

x 作为格式表示“打印为十六进制”02 表示“用零填充到两个字符”

【讨论】:

【参考方案2】:

试试:

print "0x%02x" % a

有点毛茸茸的,所以让我分解一下:

前两个字符“0x”按字面意思打印。 Python 只是逐字逐句吐出。

% 告诉 python 后面有一个格式化序列。 0 告诉格式化程序它应该用零填充任何前导空格,而 2 告诉它至少使用两列来完成它。 x 是格式化序列的结尾,表示类型 - 十六进制。

如果您想打印“0x00001”,您可以使用“0x%05x”等。

【讨论】:

【参考方案3】:

您可以使用format

>>> a = 1
>>> '0:02x'.format(a)
'01'
>>> '0x0:02x'.format(a)
'0x01'

【讨论】:

这应该优先于 % 方法(又名旧式格式)。【参考方案4】:

你可以使用format:

>>> "0x"+format(1, "02x")
'0x01'

【讨论】:

【参考方案5】:
>>> format(1, '#04x') 
'0x01'

【讨论】:

【参考方案6】:

这里是 Python 3.6+ 的 f-string 变体:

a = 1
print(f"a:0>2x")

字符串格式说明:

::格式说明符 0:填写(0>: 右对齐字段 2: 宽度 x: hex 类型

来源:6.1.3.1 Format Specification Mini-Language

【讨论】:

以上是关于Python中的整数到十六进制转换的主要内容,如果未能解决你的问题,请参考以下文章

python各种类型的转换

在 python 中使用大整数进行 Base 10 到 Base 2 的转换

python常用的十进制16进制字符串字节串之间的转换

十六进制字符串到 Python 3.2 中的带符号整数?

Python秘籍十进制整数与二进制数的转换

在 Python 中将整数转换为 2 字节的十六进制值