Python 十六进制字符串



我有三个十六进制字符串:

hex1 = "e0"
hex2 = "aa"
hex3 = "b0"
string = "\x"+hex1+"\x"+hex2+"\x"+hex3
print string
当我在将

"\x"附加到每个字符串后连接这三个字符串时,我没有得到它的字符表示。

我得到的输出是xe0xaaxb0

但是当我在一行中定义它时

string = "xe0xaaxb0"

并打印字符串,我得到正确的输出,这是

我之前的尝试有什么问题?

尝试

lst = [
    chr(int(hex1, 16)),
    chr(int(hex2, 16)),
    chr(int(hex3, 16))
]
s = ''.join(lst)  # 'xe0xaaxb0'

您的方法不起作用,因为初始字符串"\x"被解释为字符串"x" - 正如您可能看到的,使用单个反斜杠 ( "x" ) 创建初始字符串是无效的。

Python

附带了很多有用的库,并且有一个 Python 库可以满足你想要的 binascii。 binascii.unhexlify将十六进制序列(如 '010203')转换为字节'x01x02x03'

>>> hex1 = "e0"
>>> hex2 = "aa"
>>> hex3 = "b0"
>>> s = hex1+hex2+hex3
>>> import binascii
>>> binascii.unhexlify(s)
'xe0xaaxb0'

甚至还有一种方法可以解决您最初要做的事情:

>>> hex1 = "e0"
>>> hex2 = "aa"
>>> hex3 = "b0"
>>> s= "\x"+hex1+"\x"+hex2+"\x"+hex3
>>> s.decode('string-escape')
'xe0xaaxb0'

最新更新