python bytes資料型別
阿新 • • 發佈:2020-08-13
python中bytes 型別,是指一堆位元組的集合,十六進位制表現形式,兩個十六進位制數構成一個 byte ,以 b 開頭的字串都是 bytes 型別。
計算機只能儲存二進位制,字元、圖片、視訊、音樂等想存到硬碟上,必須以正確的方式編碼成二進位制後再存,但是轉成二進位制後不是直接以 0101010 的形式表示的,而是用一種叫 bytes() 的型別來表示。
bytes是一個位元組串,位元組串bytes和字串string的區別:
字串以字元為單位進行操作,位元組串以位元組為單位進行操作;位元組串和字串除了操作的資料單元不同之外,它們支援的所有方法都基本相同。
如果採用合適的字元編碼方式(字符集),位元組串可以恢復成字串;反之亦然,字串也可以轉換成位元組串。
說白了,bytes 只是簡單地記錄記憶體中的原始資料,bytes 型別的資料非常適合在網際網路上傳輸,可以用於網路通訊程式設計;bytes 也可以用來儲存圖片、音訊、視訊等二進位制格式的檔案。
字串轉換成bytes的三種方式:
- 如果字串的內容都是 ASCII 字元,那麼直接在字串前面新增
b
字首就可以轉換成 bytes。 - bytes 是一個類,呼叫它的構造方法,也就是bytes(),可以將字串按照指定的字符集轉換成 bytes;如果不指定字符集,那麼預設採用 UTF-8。
- 字串本身有一個encode() 方法,該方法專門用來將字串按照指定的字符集轉換成對應的位元組串;如果不指定字符集,那麼預設採用UTF-8。
bytes轉換成字串型別:
呼叫bytes位元組串的decode(編碼方式),將位元組串解碼為對應編碼的字串。
編碼&解碼:
Example: b'\xb9\x01\xef'.hex() -> 'b901ef'.
將10進位制整數轉換成16進位制,以字串形式表示,返回的字串始終以字首 0x 開頭:
>>>hex(255)
'0xff'
將16進位制轉換為10進位制:
>>>int('0x12',16)
18
參考:
http://c.biancheng.net/view/2175.html
https://www.cnblogs.com/lipandeng/p/11162039.html