Python中的bytes类型
Python中的bytes类型叫做“字节串”,与“字符串”类型类似,“字节串”是把多个“字节”串在一起。
1 “字节串”的定义
可以通过字符串定义bytes类型的变量,也可以通过bytes()方法定义。
1.1 通过字符串定义
给单引号或者双引号加一个前缀b,表示“字节串”,代码如图1所示。
图1 通过字符串定义
1.2 通过bytes()方法定义
1.2.1 以二进制格式显示
通过bytes()方法定义的代码如图2所示,此时以二进制格式显示bytes变量。
图2 通过bytes()方法定义
1.2.2 以字符串格式显示
当bytes中的元素值在[33, 126]这个区间内时,以元素值对应的字符串格式显示bytes变量,字符串的前缀b表示该类型是bytes,如图3所示。
图3 以字符串格式显示
1.2.3 bytes元素的取值范围
bytes中元素的取值范围是0~255,当超出这个范围时,程序会报错,如图4所示。
图4 元素取值范围
从图4可以看出,报错信息为“bytes类型的元素必须在range(0,256)范围内”。
1.2.4 bytes元素中包含汉字的定义方式
当bytes元组中包含汉字时,无法通过“1.1 通过字符串定义”中提到的方法进行定义,如图5所示。
图5 不能通过字符串加前缀方式定义汉字bytes
可以使用bytes()方法定义,代码如图6所示。
图6 通过bytes方式定义汉字bytes
从图6可以看出,bytes()方法的第一个参数是字符串格式的汉字,第二个参数表示编码方式,即将字符串转换为bytes时的编码方式。
相关链接1 utf-8编码规定用3个字节表示一个汉字;ascii编码规定用1个字节表示一个字符。
图6中可以看出,b4中的有两个用utf-8编码的汉字,所以b4中有6个字节的数据,前三个字节表示汉字“你”,后三个字节表示汉字“好”。
2 访问“字节串”中的元素
可以通过下标或者for循环的方式,访问字节串中的元素,代码如图7所示。
图7 访问字节串中的元素
从图7中可以看出,字节串中单个元素的类型都是整型。
3 字符串与字节串(bytes)的相互转换
3.1 字符串转换为字节串
通过字符串类型的变量调用encode()方法,可以将字符串转化为字节串,如图8所示。
图8 字符串转换为字节串
3.2 字节串转换为字符串
通过bytes类型的变量调用decode()方法,可以将字节串转化为字符串,如图9所示。
图9 字节串转换为字符串