微信扫一扫打赏支持

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 二进制追加
 
posted @ 2020-07-06 22:49  范仁义  阅读(1920)  评论(0编辑  收藏  举报