2017-07-27 121 views
0

我想知道如何在Python中給出一個字符串的二進制編碼。如何閱讀Python中的二進制字符串

例如,

>>> b'\x25' 
b'%' 

>>>b'\xe2\x82\xac'.decode() 
'€' 

>>> b'\xy9' 
File "<stdin>", line 1 
SyntaxError: (value error) invalid \x escape at position 0 

請,你能說明什麼\xe2代表以及如何二進制編碼的作品。

+0

這是使用0-9和a-f的十六進制。它抱怨因爲* y *無效。 – zondo

回答

2

\x是用來引入一個十六進制值,並且必須跟着正好是兩個十六進制數字。例如,\xe2表示字節(十進制)226(= 14 * 16 + 2)。

在第一種情況下,兩個字符串b'\x25'b'%'是相同的;在可能的情況下,Python使用ASCII等價物顯示值

0

我假設你使用Python 3版本。在Python 3中,默認編碼是UTF-8,所以b'\xe2\x82\xac'.decode()實際上是b'\xe2\x82\xac'.decode('UTF-8)

它給出了字符'€',它是unicode中的U + 20AC,U + 20AC的UTF8編碼實際上是3字節中的'b'\ xe2 \ x82 \ xac'。

因此,所有ASCII字符(128以下的代碼)都被編碼爲一個單字節,其值與unicode代碼的值相同。對應於一個16位unicode值的非ascii字符被utf8編碼爲2或3個字節(這被稱爲Basic Multilingual Plane)。