bytes类型

定义

    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进制后不是直接以0101010的形式表示的,而是用一种叫bytes(字节)的类型来表示,人类不可读。字符串转成bytes后长成这个样子

>>> a = "朝阳"
>>> a.encode("utf-8")  #以utf-8编码
b'\xe6\x9c\x9d\xe9\x98\xb3' #b开头的都代表是bytes类型,是以16进制来显示的,2个16进制代表一个字节。 utf-8是3个字节代表一个中文,所以以上正好是6个字节

    在python中,字符串必须编码成bytes后才能存到硬盘上。在python3中文件存储的默认编码是utf-8.,当然你可以自行改变文件的默认编码

f = open(file = "1.txt",encoding="gbk",mode="w")

二进制模式操作文件

    当然,在打开文件时如果你不想让open这个对象帮你自动编码,你也可以直接往文件里存入bytes数据。

>>> f = open(file = "1.txt",mode="wb") #wb以2进制模式打开文件
>>> s = "自学自动化".encode("utf-8") #自行编码
>>> print(s)
b'\xe8\x87\xaa\xe5\xad\xa6\xe8\x87\xaa\xe5\x8a\xa8\xe5\x8c\x96'
>>> f.write(s)
15
>>> f.close()

二进制模式打开文件有

wb 二进制创建

rb 二进制读

ab 二进制追加

字符编码的转换

    编码转换是指将一种编码转成另外一种编码,比如 utf-8 to gbk。

    为何需要编码转换呢? 因为不同操作系统编码不同, utf-8在win上没办法直接看,因为windows是GBK编码的,得转成gbk。 反过来如果你的GBK字符相在Linux\Mac上正常显示,就得转成utf-8编码。

编码&解码

>>> a
'朝阳'
>>> a.encode("utf-8")
b'\xe6\x9c\x9d\xe9\x98\xb3'
>>> a_utf8=a.encode("utf-8")
>>> a_utf8.decode("utf-8")
'朝阳'

在py3里,内存里的字符串是以unicode编码的,unicode的其中一个特性就是跟所有语言编码都有映射关系。所以你的utf-8格式的文件,在windows电脑上若是不能看,就可以把utf-8先解码成unicode,再由unicode编码成gbk就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值