1. 程式人生 > 實用技巧 >python bytes資料型別

python bytes資料型別

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(編碼方式),將位元組串解碼為對應編碼的字串。

編碼&解碼:

>>> str0 = '我是中國人'

>>> resutl = str0.encode(encoding='utf-8')# utf-8 編碼

>>> result.decode(encoding='utf-8')# utf-8 解碼

'我是中國人'

在 Python3 中記憶體裡的字串是以 Unicode 編碼的,Unicode 的其中一個特性就是跟所有語言編碼都有對映關係,所以 UTF-8 格式的檔案,在 Windows 電腦上若是不能看,就可以把 UTF-8 先解碼成 Unicode ,再由 Unicode 編碼成 GBK 就可以了。

從位元組物件建立一個十六進位制數字字串:

位元組串.hex() #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