有谁知道如何获得chr到十六进制的转换,其中输出总是两位数?
例如,如果我的转换产生0x1,我需要将其转换为0x01
,因为我连接了一个长十六进制字符串。
我使用的代码是:
hexStr += hex(ord(byteStr[i]))[2:]
答案 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背景的人(像我一样)感觉更像是家