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

And*_*Dev 18 python

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

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

我使用的代码是:

hexStr += hex(ord(byteStr[i]))[2:]
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 38

您可以使用字符串格式来实现此目的:

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

>>> "0x{:02x}".format(131)
'0x83'
Run Code Online (Sandbox Code Playgroud)

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

>>> "abcd".encode("hex")
'61626364'
Run Code Online (Sandbox Code Playgroud)

另一种选择(也适用于Python 3.x)就是这个功能binascii.hexlify().


JBe*_*rdo 16

您可以使用格式化功能:

>>> format(10, '02x')
'0a'
Run Code Online (Sandbox Code Playgroud)

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


Mat*_*ice 11

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

v = 10
s = f"0x{v:02x}"
print(s)
Run Code Online (Sandbox Code Playgroud)

输出:

0x0a
Run Code Online (Sandbox Code Playgroud)

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


vit*_*rov 6

htmlColor = "#%02X%02X%02X" % (red, green, blue)
Run Code Online (Sandbox Code Playgroud)