1. 程式人生 > 實用技巧 >Python bytes型別及用法詳解

Python bytes型別及用法詳解

Pythonbytes 型別用來表示一個位元組串。“位元組串“不是程式設計術語,是我自己“捏造”的一個詞,用來和字串相呼應。

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)免費下載。


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