导读:字符串前面加b,表示这是一个bytes流,例如,b'hello'
内容:
一、对比
bytes是字节流,str是字符串,对应的分别是 class bytes 和 class str,对比如下:
1.str由若干个字符组成,以字符为单位进行操作;bytes由若干个字节组成,以字节为单位进行操作。
2.str和bytes除了操作的数据单元不同之外,它们支持的所有方法都基本相同。
3.str和bytes都是不可变序列,不能随意增加和删除数据。
二、相互转换
方法一、调用str、bytes类的构造方法
bytes(string, encoding[, errors]) 可以将str转化为bytes类型
str(bytes[, encoding[, errors]]) 可以将bytes转化为str类型
方法二、调用str.encode()方法,调用bytes.decode()方法
str.encode(encoding='utf-8', errors='strict') 也可以将str转化为bytes类型,默认utf-8编码
bytes.decode(encoding='utf-8', errors='strict') 也可以将bytes转化为str类型,默认utf-8编码
方法三、如果str中都是ASCII字符,直接在前面加b,就可以转化为bytes类型
例如 'Angle' --> b'Angle'
三、b'Angle'和'Angle'的区别
b'Angle'里面存的是字符对应的ASCII码,你看到的是b'Angle',实际上里面保存的是010101....
中文是不能用ASCII码表示的,所以b'中'报错
说白了,bytes 只是简单地记录内存中的原始数据,至于如何使用这些数据,bytes 并不在意,你想怎么使用就怎么使用,bytes 并不约束你的行为
因此,bytes 类型的数据非常适合在互联网上传输,可以用于网络通信编程;bytes 也可以用来存储图片、音频、视频等二进制格式的文件
参考文献:
http://c.biancheng.net/view/2175.html
https://www.cnblogs.com/chownjy/p/6625299.html