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)免費下載,
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/202761.html
標籤:Python
