我有一个包含可打印和不可打印字符的字符串,例如:
'\xe8\x00\x00\x00\x00\x60\xfc\xe8\x89\x00\x00\x00\x60\x89'
在Python 3中将此转换为bytes
对象的最“pythonesque”方法是什么,即:
b'\xe8\x00\x00\x00\x00`\xfc\xe8\x89\x00\x00\x00`\x89'
答案 0 :(得分:4)
如果您的所有代码点都在U + 0000到U + 00FF的范围内,则可以编码为Latin-1:
inputstring.encode('latin1')
作为Unicode的前255个代码点,一对一映射到Latin-1标准中的字节。
这是迄今为止最快的方法,但不适用于该范围之外的输入字符串中的任何字符。
基本上,如果您的Unicode包含不应该被解码的'bytes',请编码为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'