2014-02-24 60 views
3

我有一個包含打印和不可打印的字符,例如一個字符串:轉換3

'\xe8\x00\x00\x00\x00\x60\xfc\xe8\x89\x00\x00\x00\x60\x89' 

什麼是最「pythonesque」的方式來這轉換爲bytes對象Python 3中,即:

b'\xe8\x00\x00\x00\x00`\xfc\xe8\x89\x00\x00\x00`\x89' 
+0

所有的人物都是0-255的範圍內? –

回答

4

如果所有的編碼點是U + 0000至U + 00FF的範圍內,可以對編碼的Latin-1:

inputstring.encode('latin1') 

作爲Unicode映射的前255個碼點與拉丁-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'