在python 3中,将包含十六进制字符的字符串转换为字节
我有一个包含可打印和不可打印字符的字符串,例如:在python 3中,将包含十六进制字符的字符串转换为字节,python,python-3.x,unicode,byte,Python,Python 3.x,Unicode,Byte,我有一个包含可打印和不可打印字符的字符串,例如: '\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' 如果您的所有代码点都在U+0000到U+00FF范围内,则可以将其编码为拉丁语-1: inputstring.encode(
'\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'
如果您的所有代码点都在U+0000到U+00FF范围内,则可以将其编码为拉丁语-1:
inputstring.encode('latin1')
在拉丁语-1标准中,Unicode的前255个代码点将一对一映射到字节
这无疑是最快的方法,但对于输入字符串中超出该范围的任何字符都不起作用
基本上,如果您得到的Unicode包含不应该解码的“字节”,请将其编码为Latin-1以再次获得原始字节
演示:
所有字符都在0-255范围内?
>>> '\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'