Python2与Python3直接字节转换

2024-05-17 16:15:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我需要将它转换成字符串“按它的外观”,而不替换任何字符。你知道吗

我试着这么做:

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

Tags: key字符串字节typex00xe5xa9xc0