我正在使用Python 3.3.2,我希望将十六进制转换为字符串。
This is my code:
junk = "\x41" * 50 # A
eip = pack("<L", 0x0015FCC4)
buffer = junk + eip
我尝试过使用
>>> binascii.unhexlify("4142")
b'AB'
...但我希望输出“AB”,没有“b'AB'”。我该怎么办?
编辑:
buffer = junk + binascii.unhexlify(eip).decode('ascii')
binascii.Error:找到非十六进制数字
问题是我无法连接垃圾+ eip。
谢谢。
答案 0 :(得分:1)
b
代表的是表示bytes
类,即一串字节。如果要将其转换为要使用解码方法的字符串。
>>> type(binascii.unhexlify(b"4142"))
<class 'bytes'>
>>> binascii.unhexlify(b"4142").decode('ascii')
'AB'
这会产生一个字符串,它是一串unicode字符。
编辑:
如果你想纯粹使用二进制数据,不要做解码,坚持使用字节类型,所以在你编辑的例子中:
>>> #- junk = "\x41" * 50 # A
>>> junk = b"\x41" * 50 # A
>>> eip = pack("<L", 0x0015FCC4)
>>> buffer = junk + eip
>>> buffer
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\xc4\xfc\x15\x00'
注意b
中的b"\x41"
,它表示二进制字符串,即python2中的标准字符串类型,或者字面意思是一串字节而不是一串unicode字符,它们是完全不同的的东西。
答案 1 :(得分:0)
这只是一个字面表示。不要担心b
,因为它实际上并不是字符串本身的一部分。
请参阅What does the 'b' character do in front of a string literal?