Python bytes類型及用法詳解


Python bytes 類型用來表示一個字節串。“字節串“不是編程術語,是我自己“捏造”的一個詞,用來和字符串相呼應。

bytes 是 Python 3.x 新增的類型,在 Python 2.x 中是不存在的。

字節串(bytes)和字符串(string)的對比:

  • 字符串由若干個字符組成,以字符為單位進行操作;字節串由若干個字節組成,以字節為單位進行操作。
  • 字節串和字符串除了操作的數據單元不同之外,它們支持的所有方法都基本相同。
  • 字節串和字符串都是不可變序列,不能隨意增加和刪除數據。


bytes 只負責以字節序列的形式(二進制形式)來存儲數據,至於這些數據到底表示什么內容(字符串、數字、圖片、音頻等),完全由程序的解析方式決定。如果采用合適的字符編碼方式(字符集),字節串可以恢復成字符串;反之亦然,字符串也可以轉換成字節串。

說白了,bytes 只是簡單地記錄內存中的原始數據,至於如何使用這些數據,bytes 並不在意,你想怎么使用就怎么使用,bytes 並不約束你的行為。

bytes 類型的數據非常適合在互聯網上傳輸,可以用於網絡通信編程;bytes 也可以用來存儲圖片、音頻、視頻等二進制格式的文件。

字符串和 bytes 存在着千絲萬縷的聯系,我們可以通過字符串來創建 bytes 對象,或者說將字符串轉換成 bytes 對象。有以下三種方法可以達到這個目的:

  • 如果字符串的內容都是 ASCII 字符,那么直接在字符串前面添加b前綴就可以轉換成 bytes。
  • bytes 是一個類,調用它的構造方法,也就是 bytes(),可以將字符串按照指定的字符集轉換成 bytes;如果不指定字符集,那么默認采用 UTF-8。
  • 字符串本身有一個 encode() 方法,該方法專門用來將字符串按照指定的字符集轉換成對應的字節串;如果不指定字符集,那么默認采用 UTF-8。


【實例】使用不同方式創建 bytes 對象:

#通過構造函數創建空 bytes
b1 = bytes()
#通過空字符串創建空 bytes
b2 = b''

#通過b前綴將字符串轉換成 bytes
b3 = b'https://jq.qq.com/?_wv=1027&k=wXPt4wFA'
print("b3: ", b3)
print(b3[3])
print(b3[7:22])

#為 bytes() 方法指定字符集
b4 = bytes('Python資料', encoding='UTF-8')
print("b4: ", b4)

#通過 encode() 方法將字符串轉換成 bytes
b5 = "Python資料".encode('UTF-8')
print("b5: ", b5)

對於非 ASCII 字符,print 輸出的是它的字符編碼值(十六進制形式),而不是字符本身。非 ASCII 字符一般占用兩個字節以上的內存,而 bytes 是按照單個字節來處理數據的,所以不能一次處理多個字節。

bytes 類也有一個 decode() 方法,通過該方法可以將 bytes 對象轉換為字符串。緊接上面的程序,添加以下代碼:

#通過 decode() 方法將 bytes 轉換成字符串
str1 = b5.decode('UTF-8')
print("str1: ", str1)

結尾福利

這里免費送大家一套2020最新python入門到高級項目實戰視頻教程,點擊這里即可領取!或者加入博主Python交流圈(QQ群:1049600759)免費下載。


 

本文的文字及圖片來源於網絡加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。


免責聲明!

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



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