Python十六进制字符串

时间:2016-01-18 05:51:16

标签: python

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

hex1 = "e0"
hex2 = "aa"
hex3 = "b0"
string = "\\x"+hex1+"\\x"+hex2+"\\x"+hex3

print string

当我在追加" \ x"之后连接这三个字符串时他们每个人都没有得到它的角色代表。

我输出为\xe0\xaa\xb0

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

string = "\xe0\xaa\xb0"

和打印字符串我得到正确的输出

我以前的尝试出了什么问题?

2 个答案:

答案 0 :(得分:2)

尝试

lst = [
    chr(int(hex1, 16)),
    chr(int(hex2, 16)),
    chr(int(hex3, 16))
]
s = ''.join(lst)  # '\xe0\xaa\xb0'

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

答案 1 :(得分:0)

Python附带了许多有用的库,并且有一个Python库可以满足您的需求,binasciibinascii.unhexlify会将'010203'之类的十六进制序列转换为字节'\x01\x02\x03'

>>> hex1 = "e0"
>>> hex2 = "aa"
>>> hex3 = "b0"
>>> s = hex1+hex2+hex3
>>> import binascii
>>> binascii.unhexlify(s)
'\xe0\xaa\xb0'

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

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