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)以其中\(zhòng)xe4為例,0xe4對(duì)應(yīng)十進(jìn)制數(shù)位228,對(duì)應(yīng)二進(jìn)制為1110 0100,八位一個(gè)字節(jié)。即encode讓變量一個(gè)字節(jié)一個(gè)字節(jié)的顯示。
?
我們從網(wǎng)絡(luò)或磁盤上讀取字節(jié)流,讀到的數(shù)據(jù)就是bytes。 然后要把bytes轉(zhuǎn)換為str。
>>> b'ABC'.decode('ascii') 'ABC' >>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') '中文'關(guān)于encode、decode以及什么時(shí)候是unicode,什么時(shí)候是ascii、utf-8,可以這么理解:在內(nèi)存里是str,是unicode,是字母是中文等。在傳輸時(shí),是bytes,是作為字母的bytes(因?yàn)橐粋€(gè)字母占一個(gè)字節(jié),一個(gè)\xe4也是一個(gè)字節(jié)),是十六進(jìn)制表示的bytes。
?
占位符:%d→整數(shù) ? ?%s→字符串 ? ?%f→浮點(diǎn)數(shù) ? ?%x→十六進(jìn)制整數(shù)
?
轉(zhuǎn)載于:https://www.cnblogs.com/inspiring26/p/5822371.html
總結(jié)