有谁知道如何在输出始终为两位数的情况下将字符转换为十六进制?
例如,如果我的转换产生 0x1,我需要将其转换为0x01
,因为我正在连接一个长的十六进制字符串。
我正在使用的代码是:
hexStr += hex(ord(byteStr[i]))[2:]
有谁知道如何在输出始终为两位数的情况下将字符转换为十六进制?
例如,如果我的转换产生 0x1,我需要将其转换为0x01
,因为我正在连接一个长的十六进制字符串。
我正在使用的代码是:
hexStr += hex(ord(byteStr[i]))[2:]
您可以为此目的使用字符串格式:
>>> "0x{:02x}".format(13)
'0x0d'
>>> "0x{:02x}".format(131)
'0x83'
编辑:您的代码表明您正在尝试将字符串转换为十六进制字符串表示形式。有一种更简单的方法可以做到这一点(Python2.x):
>>> "abcd".encode("hex")
'61626364'
另一种方法(也适用于 Python 3.x)是函数binascii.hexlify()
.
您可以使用格式功能:
>>> format(10, '02x')
'0a'
您不需要删除该0x
部分(就像您对 所做的那样[2:]
)
htmlColor = "#%02X%02X%02X" % (red, green, blue)
如果您使用的是 python 3.6 或更高版本,您还可以使用 fstrings:
v = 10
s = f"0x{v:02x}"
print(s)
输出:
0x0a
大括号部分的语法与 相同string.format()
,不同之处在于您使用变量的名称。有关更多信息,请参阅https://www.python.org/dev/peps/pep-0498/。
标准模块binascii
也可能是答案,即当您需要转换更长的字符串时:
>>> import binascii
>>> binascii.hexlify('abc\n')
'6162630a'
使用格式而不是使用十六进制函数:
>>> mychar = ord('a')
>>> hexstring = '%.2X' % mychar
您还可以将数字“2”更改为所需的位数,将“X”更改为“x”以在十六进制字母数字的大小写表示之间进行选择。
许多人认为这是 Python 中旧的 % 样式格式,但我喜欢它,因为格式字符串语法与其他语言(如 C 和 Java)使用的格式相同。
最简单的方法(我认为)是:
your_str = '0x%02X' % 10
print(your_str)
将打印:
0x0A
% 之后的数字将在字符串中转换为十六进制,我认为这样很清楚,来自 C 背景的人(比如我)感觉更像家