我有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'>