py8.29
以Unicode表示的str通過encode()方法可以編碼為指定的bytes,例如:
>>> 'ABC'.encode('ascii') b'ABC' >>> '中文'.encode('utf-8') b'\xe4\xb8\xad\xe6\x96\x87' >>> '中文'.encode('ascii') Traceback (most recent call last):File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)以其中\xe4為例,0xe4對應十進制數位228,對應二進制為1110 0100,八位一個字節。即encode讓變量一個字節一個字節的顯示。
?
我們從網絡或磁盤上讀取字節流,讀到的數據就是bytes。 然后要把bytes轉換為str。
>>> b'ABC'.decode('ascii') 'ABC' >>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') '中文'關于encode、decode以及什么時候是unicode,什么時候是ascii、utf-8,可以這么理解:在內存里是str,是unicode,是字母是中文等。在傳輸時,是bytes,是作為字母的bytes(因為一個字母占一個字節,一個\xe4也是一個字節),是十六進制表示的bytes。
?
占位符:%d→整數 ? ?%s→字符串 ? ?%f→浮點數 ? ?%x→十六進制整數
?
轉載于:https://www.cnblogs.com/inspiring26/p/5822371.html
總結