Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python 3中,将包含十六进制字符的字符串转换为字节_Python_Python 3.x_Unicode_Byte - Fatal编程技术网

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