bytes类型用来表示一个字节串。“字节串”是与字符串相呼应。

bytes是Python3.x新增的类型

比较:

  • 字符串由若干字符组成,以字符为单位进行操作,字节串由若干字节组成,以字节为单位进行操作
  • 字节串和字符串除了操作的的数据单元不同之外他们支持的所有方法都基本一样
  • 字节串与字符串都是不可变序列,不能随意的增加与删除数据

关系:

  • 如果字符串的内容都是ASCII码,就可以直接在字符串前添加b前缀转换成bytes
  • bytes是一个类,调用它的构造方法,也就是bytes(),可以将字符串按照指定的字符集(如encode=’GBK‘)转换成bytes;如果不指定字符集就默认为UTF-8

如果是ASCII编码

#通过构造函数创建空 bytes
b1 = bytes()
#通过空字符串创建空 bytes
b2 = b''

#通过b前缀将字符串转换成 bytes
b3 = b'http://jzcheng.cn'
print("b3: ", b3) # b3: b'http://jzcheng.cn'
print(b3[2])  # 116 (是 t 对应的ASCII码)
print(b3[2:12]) # b'tp://jzche'

如果不是ASCII码

#使用 bytes()创建字节串并指定字符集
b4 = bytes('我喜欢你',encoding='UTF-8')
print(b4)  # b'\xe6\x88\x91\xe5\x96\x9c\xe6\xac\xa2\xe4\xbd\xa0'

#把字符串转成bytes  -->encode()
b5 = '我喜欢你'.encode('UTF-8')
print(b5) # b'\xe6\x88\x91\xe5\x96\x9c\xe6\xac\xa2\xe4\xbd\xa0'
  • 如果是非ASCII码,输出结果以十六进制输出y原因:非ASCII一般占两个以上的字节,而bytes是按照单个字节来处理数据的

bytes类有一个方法,可以把bytes转换成字符串

# 通过decode()将bytes()转换成字符串
str1 = b5.decode('UTF-8')
print('str1:',str1) # str1: 我喜欢你
Last modification:August 12, 2022
请我喝瓶冰阔落吧