python的Bytes類型


python的Bytes類型

一、總結

一句話總結:

在python中,數據轉成2進制后不是直接以010101的形式表示的,而是用一種叫bytes(字節)的類型來表示的。 例如 b'\xe8\x87\xaa\xe5

 

1、python中,轉化成bytes的方式?

encode("utf-8"),解碼的話就是decode("utf-8")
# 獲取一個post請求
import urllib.parse
data = bytes(urllib.parse.urlencode({"hello":"world"}),encoding="utf-8")
response = urllib.request.urlopen("http://httpbin.org/post",data=data)
print(response.read().decode("utf-8"))

 

 

 

二、python的Bytes類型

轉自或參考:Bytes類型 - Kwan、C - 博客園
https://www.cnblogs.com/Kwan-C/p/11480678.html

 

一、定義

bytes類型是指一堆字節的集合,在python中以b開頭的字符串都是bytes類型。

b'\xe5\xb0\x8f\xe7\x8c\xbf\xe5\x9c\x88' 
'''
b開頭的都代表是bytes類型,是以16進制來顯示的,2個16進制代表一個字節。 
utf-8是3個字節代表一個中文,所以以上正好是9個字節
'''

 

二、Bytes類型的作用

計算機只能存儲2進制,要想將字符、圖片、視頻、音樂等存在硬盤上,也必須以正確的方式編碼成2進制后再存儲。

  • 對於文字,我們可以用gbk編碼,也可以用utf-8、ASCII編碼。

  • 對於圖片,必須編碼成PNG,JPEG等格式。

  • 對於音樂,必須編碼成MP3,WAV等。

在python中,數據轉成2進制后不是直接以010101的形式表示的,而是用一種叫bytes(字節)的類型來表示的。字符串轉成bytes后長成這個樣子:

s = '小明'
a = s.encode('utf-8')
print(a)

在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()

輸出結果:

b'\xe8\x87\xaa\xe5\xad\xa6\xe7\xbc\x96\xe7\xa8\x8b\xef\xbc\x8c\xe8\xb0\x81\xe4\xb8\x8d\xe4\xb8\x8a\xe5\xb0\x8f\xe7\x8c\xbf\xe5\x9c\x88'

以2進制模式打開文件的方式有:

  • wb 二進制創建
  • rb 二進制讀
  • ab 二進制追加
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM