Python 標準數據類型:Bytes

Bytes 對象是由單個字節做爲基本元素(8位,取值範圍 0-255)組成的序列,爲不可變對象。函數

Bytes 對象只負責以二進制字節序列的形式記錄所需記錄的對象,至於該對象到底表示什麼(好比究竟是什麼字符)則由相應的編碼格式解碼所決定。咱們能夠經過調用 bytes() 類(沒錯,它是類,不是函數)生成 bytes 實例,其值形式爲 b'xxxxx',其中 'xxxxx' 爲一至多個轉義的十六進制字符串(單個 x 的形式爲:\xHH,其中 \x 爲小寫的十六進制轉義字符,HH 爲二位十六進制數)組成的序列,每一個十六進制數表明一個字節(八位二進制數,取值範圍 0-255),對於同一個字符串若是採用不一樣的編碼方式生成 bytes 對象,就會造成不一樣的值:編碼

clipboard.png

好比上例中的 a 字符串對象,其十進制 unicode 值爲 24464,分別使用 'utf-8' 和 'gb2312' 兩種編碼格式將其轉換成 bytes 對象 b 和 c ,結果 b 和 c 的值是徹底不一樣的,因爲基於的編碼格式不一致, b c 長度甚至都不相同,前者有 3 個字節長度,後者有 2 個字節長度:spa

clipboard.png

另外,對於 ASCII 字符串,能夠直接使用 b'xxxx' 賦值建立 bytes 實例,但對於非 ASCII 編碼的字符則不能經過這種方式建立 bytes 實例:code

clipboard.png

因爲 bytes 是序列,所以咱們能夠經過索引或切片訪問它的元素:對象

clipboard.png

能夠發現若是以單個索引的形式訪問元素,其會直接返回單個字節的十進制整數,而以序列片斷的形式訪問時,則返回相應的十六進制字符序列。索引

對於 bytes 實例,若是須要還原成相應的字符串,則須要藉助內置的解碼函數 decode(),藉助相應的編碼格式解碼爲正常字符串對象,若是採用錯誤的編碼格式解碼,則有可能發生錯誤:ip

clipboard.png

相關文章
相關標籤/搜索