如何将整数格式化为两位十六进制?

时间:2012-07-26 19:44:47

标签: python

有谁知道如何获得chr到十六进制的转换,其中输出总是两位数?

例如,如果我的转换产生0x1,我需要将其转换为0x01,因为我连接了一个长十六进制字符串。

我使用的代码是:

hexStr += hex(ord(byteStr[i]))[2:]

7 个答案:

答案 0 :(得分:35)

您可以为此目的使用字符串格式:

>>> "0x{:02x}".format(13)
'0x0d'

>>> "0x{:02x}".format(131)
'0x83'

编辑:您的代码建议您尝试将字符串转换为十六进制字符串表示形式。有一种更简单的方法(Python2.x):

>>> "abcd".encode("hex")
'61626364'

另一种选择(也适用于Python 3.x)是函数binascii.hexlify()

答案 1 :(得分:16)

您可以使用格式化功能:

>>> format(10, '02x')
'0a'

您不需要删除0x部分(就像您使用[2:]所做的那样)

答案 2 :(得分:3)

标准模块binascii也可能是答案,即当您需要转换更长的字符串时:

>>> import binascii
>>> binascii.hexlify('abc\n')
'6162630a'

答案 3 :(得分:2)

使用format而不是使用十六进制函数:

>>> mychar = ord('a')
>>> hexstring = '%.2X' % mychar

您也可以将数字“2”更改为您想要的位数,将“X”更改为“x”以在十六进制字母数字的大写和小写字母之间进行选择。

许多人认为这是Python中旧的%式格式,但我喜欢它,因为格式字符串语法与其他语言(如C和Java)使用的格式相同。

答案 4 :(得分:2)

如果您使用的是python 3.6或更高版本,则还可以使用fstrings:

v = 10
s = f"0x{v:02x}"
print(s)

输出:

0x0a

大括号部分的语法与string.format()相同,但使用的是变量名。有关更多信息,请参见https://www.python.org/dev/peps/pep-0498/

答案 5 :(得分:1)

htmlColor = "#%02X%02X%02X" % (red, green, blue)

答案 6 :(得分:1)

最简单的方法(我认为)是:

your_str = '0x%02X,' % 10
print(your_str)

将打印:

0x0A

%之后的数字将在字符串中转换为十六进制,我认为这种方式很清楚,来自C背景的人(像我一样)感觉更像是家