在Python3以后,字符串和bytes類型徹底分開了。字符串是以字符為單位進行處理的,bytes類型是以字節為單位處理的。
bytes數據類型在所有的操作和使用甚至內置方法上和字符串數據類型基本一樣,也是不可變的序列對象。
bytes對象只負責以二進制字節序列的形式記錄所需記錄的對象,至於該對象到底表示什么(比如到底是什么字符)則由相應的編碼格式解碼所決定。Python3中,bytes通常用於網絡數據傳輸、二進制圖片和文件的保存等等。可以通過調用bytes()生成bytes實例,其值形式為 b'xxxxx',其中 'xxxxx' 為一至多個轉義的十六進制字符串(單個 x 的形式為:\x12
,其中\x為小寫的十六進制轉義字符,12為二位十六進制數)組成的序列,每個十六進制數代表一個字節(八位二進制數,取值范圍0-255),對於同一個字符串如果采用不同的編碼方式生成bytes對象,就會形成不同的值.
創建方法:
b = b'' # 創建一個空的bytes b = bytes() # 創建一個空的bytes b = b'hello' # 直接指定這個hello是bytes類型 b = bytes('string',encoding='編碼類型') #利用內置bytes方法,將字符串轉換為指定編碼的bytes b = str.encode('編碼類型') # 利用字符串的encode方法編碼成bytes,默認為utf-8類型 bytes.decode('編碼類型'):將bytes對象解碼成字符串,默認使用utf-8進行解碼。
對於bytes,我們只要知道在Python3中某些場合下強制使用,以及它和字符串類型之間的互相轉換,其它的基本照抄字符串。
簡單的省事模式:
string = b'xxxxxx'.decode()
直接以默認的utf-8編碼解碼bytes成string
b = string.encode()
直接以默認的utf-8編碼string為bytes