文章目錄
- 一.bytes
- 二.str和bytes相互轉換
- 三.bytearray
一.bytes
bytes對象只負責以二進制字節序列的形式記錄所需記錄的對象,至于該對象到底表示什么(比如到底是什么字符)則由相應的編碼格式解碼所決定。
bytes是Python 3中特有的,Python 2 里不區分bytes和str。
Python2 中
>>> type(b'xxxxx')
<type 'str'>
>>> type('xxxxx')
<type 'str'>
Python3 中
>>> type(b'xxxxx')
<class 'bytes'>
>>> type('xxxxx')
<class 'str'>
二.str和bytes相互轉換
python3中:
str 使用encode方法轉化為 bytes
bytes通過decode轉化為str
In [9]: str1='人生苦短,我用Python!'In [10]: type(str1)
Out[10]: strIn [11]: b=str1.encode()In [12]: b
Out[12]: b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\
xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'In [13]: type(str1.encode())
Out[13]: bytes
In [22]: b
Out[22]: b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\
xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'In [23]: type(b)
Out[23]: bytesIn [24]: b.decode()
Out[24]: '人生苦短,我用Python!'In [25]: type(b.decode())
Out[25]: str
在Python 2中由于不區分str和bytes所以可以直接通過encode()和decode()方法進行編碼解碼。
而在Python 3中把兩者給分開了這個在使用中需要注意。實際應用中在互聯網上是通過二進制進行傳輸,所以就需要將str轉換成bytes進行傳輸,而在接收中通過decode()解碼成我們需要的編碼進行處理數據這樣不管對方是什么編碼而本地是我們使用的編碼這樣就不會亂碼。
三.bytearray
bytearray和bytes不一樣的地方在于,bytearray是可變的。
In [26]: str1
Out[26]: '人生苦短,我用Python!'In [28]: b1=bytearray(str1.encode())In [29]: b1
Out[29]: bytearray(b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')In [30]: b1.decode()
Out[30]: '人生苦短,我用Python!'In [31]: b1[:6]=bytearray('生命'.encode())In [32]: b1
Out[32]: bytearray(b'\xe7\x94\x9f\xe5\x91\xbd\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')In [33]: b1.decode()
Out[33]: '生命苦短,我用Python!'