Python3新增了bytes类型,用于代表字节串,是字节串不是字符串。
字符串(str)由多个字符组成,以字符为单位进行操作;
字节串(bytes)由多个字节组成,以字节为单位进行操作。
bytes和str 除操作的数据单元不同之外,它们支持的所有方法都基本相同,bytes 也是不可变序列。
bytes 对象只负责以字节(二进制格式)序列来记录数据,至于这些数据到底表示什么内容,完全由程序决定。
如果采用合适的字符集,字符串可以转换成字节串;
反过来,字节串也可以恢复成对应的字符串。
由于bytes保存的就是原始的字节(二进制格式)数据。因此,bytes 对象可用于在网络上传输数据,也可用于存储各种二进制格式的文件,比如图片、音乐等文件。
如果希望将一个字符串转换成bytes对象,有如下三种方式。
1)如果字符串内容都是ASCII字符,则可以通过直接在字符串之前添加b来构建字节串值;
2)调用 bytes()函数(其实是 bytes 的构造方法)将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用UTF-8字符集。
3)调用字符串本身的encode)方法将字符串按指定字符集转换成字节串,如果不指定字符集默认使用UTF-8字符集。
例如,如下程序示范了如何创建字节串。
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
#创建一个空的bytes
b1 = bytes()
#创建一个空的bytes值
b2 = b''
#通过b前缀制定laopi是bytes类型