python 二進位制流轉圖片_小猿圈python學習-Bytes型別
阿新 • • 發佈:2020-12-25
技術標籤:python 二進位制流轉圖片
定義
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 二進位制追加