bytes和bytearray


bytes

bytes是Python 3中特有的,Python 2 里不區分bytes和str。

  • Python 2中

>>> type(b'xxxxx')
<type 'str'>
>>> type('xxxxx')
<type 'str'>
  • Python 3中

>>> type(b'xxxxx')
<class 'bytes'>
>>> type('xxxxx')
<class 'str'>

區別

  • bytes是byte的序列,而str是unicode的序列。

  • str 使用encode方法轉化為 bytes

  • bytes通過decode轉化為str
    str轉換成bytes:

In [9]: str1='人生苦短,我用Python!'

In [10]: type(str1)
Out[10]: str

In [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

bytes轉換成str:

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]: bytes

In [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!'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM