Python十六进制字符串
我有三个十六进制字符串:Python十六进制字符串,python,Python,我有三个十六进制字符串: hex1 = "e0" hex2 = "aa" hex3 = "b0" string = "\\x"+hex1+"\\x"+hex2+"\\x"+hex3 print string 在将“\x”附加到这三个字符串之后连接这三个字符串时,无法获得其字符表示形式 我得到的输出为\xe0\xaa\xb0 但是当我用一行来定义它的时候 string = "\xe0\xaa\xb0" 然后打印字符串,得到正确的输出,即ર 我上次的尝试有什么问题?试试看 lst = [
hex1 = "e0"
hex2 = "aa"
hex3 = "b0"
string = "\\x"+hex1+"\\x"+hex2+"\\x"+hex3
print string
在将“\x”附加到这三个字符串之后连接这三个字符串时,无法获得其字符表示形式
我得到的输出为\xe0\xaa\xb0
但是当我用一行来定义它的时候
string = "\xe0\xaa\xb0"
然后打印字符串,得到正确的输出,即ર代码>
我上次的尝试有什么问题?试试看
lst = [
chr(int(hex1, 16)),
chr(int(hex2, 16)),
chr(int(hex3, 16))
]
s = ''.join(lst) # '\xe0\xaa\xb0'
您的方法将不起作用,因为初始字符串“\\x”
被解释为字符串“\x”
——正如您可能看到的,使用单个反斜杠(“\x”
)创建初始字符串是无效的 试试看
lst = [
chr(int(hex1, 16)),
chr(int(hex2, 16)),
chr(int(hex3, 16))
]
s = ''.join(lst) # '\xe0\xaa\xb0'
您的方法将不起作用,因为初始字符串“\\x”
被解释为字符串“\x”
——正如您可能看到的,使用单个反斜杠(“\x”
)创建初始字符串是无效的 Python附带了很多有用的库,并且有一个Python库可以满足您的需要binascii.unexlify
将类似于'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'
Python附带了很多有用的库,并且有一个Python库可以满足您的需要binascii.unexlify
将类似于'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'
从\\x
中删除一个额外的\并尝试追加。很抱歉,输入错误。请阅读我上面的评论。从\\x
中删除一个额外的\并尝试附加。很抱歉,输入错误。请阅读我上面的评论。