我有一个包含可打印和不可打印字符的字符串,例如:
'\xe8\x00\x00\x00\x00\x60\xfc\xe8\x89\x00\x00\x00\x60\x89'
在Python 3中,将此内容转换为bytes
对象,最具有“Python风格”的方法是什么:
b'\xe8\x00\x00\x00\x00`\xfc\xe8\x89\x00\x00\x00`\x89'
我有一个包含可打印和不可打印字符的字符串,例如:
'\xe8\x00\x00\x00\x00\x60\xfc\xe8\x89\x00\x00\x00\x60\x89'
在Python 3中,将此内容转换为bytes
对象,最具有“Python风格”的方法是什么:
b'\xe8\x00\x00\x00\x00`\xfc\xe8\x89\x00\x00\x00`\x89'
inputstring.encode('latin1')
由于Unicode的前255个码点与Latin-1标准中的字节一一对应,因此这是目前最快的方法。
然而,对于输入字符串中该范围外的任何字符,此方法均不适用。
基本上,如果你的Unicode包含本不应该被解码的“字节”,则将其编码为Latin-1以再次获取原始字节。
演示:
>>> '\xe8\x00\x00\x00\x00\x60\xfc\xe8\x89\x00\x00\x00\x60\x89'.encode('latin1')
b'\xe8\x00\x00\x00\x00`\xfc\xe8\x89\x00\x00\x00`\x89'