Python字節(jié)串類型bytes及用法
一、bytes 字節(jié)串類型概述
Python 3 新增了 bytes 類型,用于代表字節(jié)串,是一個類型,不是C#中的列表。
由于 bytes 保存的就是原始的字節(jié)(二進制格式)數據,因此 bytes 對象可用于在網絡上傳輸數據,也可用于存儲各種二進制格式的文件,比如圖片、音樂等文件。
1、字節(jié)串與字符串之間的區(qū)別
bytes 和 str 除操作的數據單元不同之外,它們支持的所有方法都基本相同,bytes 也是不可變序列。
- 字符串(str)由多個字符組成,以字符為單位進行操作;
- 字節(jié)串(bytes)由多個字節(jié)組成,以字節(jié)為單位進行操作。
2、字節(jié)概述
計算機底層有兩個基本概念:位(bit)和字節(jié)(Byte),其中
- bit 代表 1 位,要么是 0,要么是 1;
- Byte 代表 1 字節(jié),1 字節(jié)包含 8 位。
在字節(jié)串中每個數據單元都是字節(jié),也就是 8 位,其中每 4 位(相當于 4 位二進制數,最小值為 0 ,最大值為 15)可以用一個十六進制數來表示,因此每字節(jié)需要兩個十六進制數表示,
b'\xe6\x88\x91\xe7\x88\xb1Python\xe7\xbc\x96\xe7\xa8\x8b', # 比如 :\xe6 就表示 1 字節(jié),其中 \x 表示十六進制,e6 就是兩位的十六進制數。
Unicode 字符集,包括漢字,為兩個字節(jié)(16 位,支持 65536 個字符編號)。實際使用的 UTF-8, UTF-16 等其實都屬于 Unicode 字符集。
二、字節(jié)串與字符串之間的轉換
bytes 對象只負責以字節(jié)(二進制格式)序列來記錄數據,至于這些數據到底表示什么內容,完全由程序決定。如果采用合適的字符集,字符串可以轉換成字節(jié)串;反過來,字節(jié)串也可以恢復成對應的字符串。
1、將一個字符串轉換成 bytes 對象
如果希望將一個字符串轉換成 bytes 對象,有如下三種方式:
下面程序中 b1~b5 都是字節(jié)串對象,該程序示范了以不同方式來構建字節(jié)串對象。其中 b2、b3 都是直接在 ASCII 字符串前添加b前綴來得到字節(jié)串的:b4 調用 bytes() 函數來構建字節(jié)串;而 b5 則調用字符串的 encode 方法來構建字節(jié)串。
- 如果字符串內容都是 ASCII 字符,則可以通過直接在字符串之前添加 b 來構建字節(jié)串值。
# 創(chuàng)建一個空的bytes b1 = bytes() # 創(chuàng)建一個空的bytes值 b2 = b'' # 1、通過b前綴指定hello是bytes類型的值 b3 = b'hello' print(b3) print(b3[0]) print(b3[2:4]) #b'hello' #104 #b'll'
- 調用 bytes() 函數(其實是 bytes 的構造方法)將字符串按指定字符集轉換成字節(jié)串,
如果不指定字符集,默認使用 UTF-8 字符集。
# 調用bytes方法將字符串轉成bytes對象 b4 = bytes('我愛Python編程',encoding='utf-8') print(b4) #b'\xe6\x88\x91\xe7\x88\xb1Python\xe7\xbc\x96\xe7\xa8\x8b'
- 調用字符串本身的encode() 方法將字符串按指定字符集轉換成字節(jié)串(常用)
如果不指定字符集,默認使用 UTF-8 字符集。
# 利用字符串的encode()方法編碼成bytes,默認使用utf-8字符集 b5 = "學習Python很有趣".encode('utf-8') print(b5) #b'\xe5\xad\xa6\xe4\xb9\xa0Python\xe5\xbe\x88\xe6\x9c\x89\xe8\xb6\xa3'
從上面的輸出結果可以看出,字節(jié)串和字符串非常相似,只是字節(jié)串里的每個數據單元都是 1 字節(jié)。
2、decode():將一個bytes 對象轉換成字符串
如果程序獲得了 bytes 對象,也可調用 bytes 對象的 decode() 方法將其解碼成字符串,
#將bytes 對象解碼成字符串,默認使用UTF-8進行解碼 st = b5.decode('utf-8') print(st)#學習Python很有趣
到此這篇關于Python字節(jié)串類型bytes及用法的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
python不到50行代碼完成了多張excel合并的實現示例
這篇文章主要介紹了python不到50行代碼完成了多張excel合并的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05