1. 程式人生 > 其它 >python 二進位制流轉圖片_小猿圈python學習-Bytes型別

python 二進位制流轉圖片_小猿圈python學習-Bytes型別

技術標籤:python 二進位制流轉圖片

708b554d14d68dc9b8a1a2db72cb41e0.png

定義

bytes型別是指一堆位元組的集合,在python中以b開頭的字串都是bytes型別

b'xe5xb0x8fxe7x8cxbfxe5x9cx88' #b開頭的都代表是bytes型別,是以16進位制來顯示的,2個16進位制代表一個位元組。 utf-8是3個位元組代表一箇中文,所以以上正好是9個位元組

Bytes型別的作用

計算機只能儲存2進位制, 我們的字元、圖片、視訊、音樂等想存到硬碟上,也必須以正確的方式編碼成2進位制後再存。

  • 對於文字,我們可以以gbk編碼,也可以以utf-8、ASCII編碼。
  • 對於圖片,必須編碼成PNG,JPEG等格式
  • 對於音樂,必須編碼成MP3,WAV等

在python中, 資料轉成2進位制後不是直接以0101010的形式表示的,而是用一種叫bytes(位元組)的型別來表示,人類不可讀。字串轉成bytes後長成這個樣子

>>> s = "小猿圈"
>>> s.encode("utf-8")  # 以utf-8編碼 
b'xe5xb0x8fxe7x8cxbfxe5x9cx88' #b開頭的都代表是bytes型別,是以16進位制來顯示的,2個16進位制代表一個位元組。 utf-8是3個位元組代表一箇中文,所以以上正好是9個位元組

在python中,字串必須編碼成bytes後才能存到硬碟上。 唉,你說,我之前學的檔案操作時也沒有把字串編碼後再存呀, 哈,那是python預設幫你幹了這個事,在python3中檔案儲存的預設編碼是utf-8.

當然你可以自行改變檔案的預設編碼,但意味著你存的資料

f = open(file="encode_test",encoding="gbk",mode="w")

這樣,你寫入的資料就是按gbk編碼的了。

以二進位制模式操作檔案

當然,在開啟檔案時如果你不想讓open這個物件幫你自動編碼,你也可以直接往檔案裡存入bytes資料。

f = open(file="encode_test",mode="wb") # wb以2進位制模式開啟檔案

s = "自學程式設計,誰不上小猿圈".encode("utf-8")  # 自行編碼
print(s )
f.write(s)
f.close()
#以下是print(s)的輸出
b'xe8x87xaaxe5xadxa6xe7xbcx96xe7xa8x8bxefxbcx8cxe8xb0x81xe4xb8x8dxe4xb8x8axe5xb0x8fxe7x8cxbfxe5x9cx88'

2進位制模式開啟檔案有

  • wb 二進位制建立
  • rb 二進位制讀
  • ab 二進位制追加