Python 2与Python 3直接字节转换

时间:2016-02-25 10:15:52

标签: python string python-3.x byte

我有Python 2代码,效果很好:

# python 2
key = 'L\x1e@\xael\xc0\xa9\xa3\x8d\x9e5\xac\x00\xe5\x98h'
# type(key) => <type 'str'>

最初我的密钥只是一些随机的32字节值。在这里,我只分享repr()个值。

所以我可以使用一些随机字节序列作为字符串。 但是当谈到Python3时,我的传入字符串是以字节为单位的:

# python 3
key = b'L\x1e@\xael\xc0\xa9\xa3\x8d\x9e5\xac\x00\xe5\x98h'
# type(key) => <class 'bytes'>

我需要将其转换为字符串“看起来像”,而不是替换任何字符。

虽然ascii:

我试图这样做
key_chuncks = [chr(s) for s in key]
# ['L', '\x1e', '@', '®', 'l', 'À', '©', '£', '\x8d', '\x9e', '5', '¬', '\x00', 'å', '\x98', 'h']

如您所见chr(s)将一些字节序列解释为字符,我不需要这种行为。 有没有办法,将我的字节转换为字符串“看起来像”?没有任何字符解释(解码)。 ?

我只需要在Python3中将key_before转换为key_after

key_before = b'L\x1e@\xael\xc0\xa9\xa3\x8d\x9e5\xac\x00\xe5\x98h'
key_after = 'L\x1e@\xael\xc0\xa9\xa3\x8d\x9e5\xac\x00\xe5\x98h'

# type(key_after) => <type 'str'>

0 个答案:

没有答案