文章目录
字节串bytes和字节数组bytearray
字节串bytes
作用:存储以字节为单位的数据
说明:字节串是不可变的字节序列,字节是0-255之间的整数
创建空字节串的字面值:
b’’
b""
b’’’’’’
b""""""
B’’
B""
B’’’’’’
B""""""
创建非空字节串的字面值:
b’ABCD’
b’\x41\x41’
b’hello world’
字节串的构造函数 bytes
bytes() # 生成一个空的字节串,等同于b’’
bytes([10, 20, 30, 40, 50, 60]) # b'\n\x14\x1e(2<'
bytes(整型可迭代对象) # 用可迭代对象初始化一个字节串
bytes(range(97, 97+26)) # b'abcdefghijklmnopqrstuvwxyz'
bytes(整数n) # 生成n和值为零的字节串
bytes(10) # b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
bytes(字符串, encoding=‘utf-8’) # 用字符串的转换编码生成一个字节串
bytes('hello', 'ascii') # b'hello'
bytes('hello小小猫', encoding='utf-8') # b'hello\xe5\xb0\x8f\xe5\xb0\x8f\xe7\x8c\xab'
字节串的运算
+ += * *=
< <= > >= == !=
in/not in
索引/切片
示例:
b = b'abc' + b'123' # b'abc123'
b'ABC' * 4 # b'ABCABCABCABC'
b'ABC' < b'ABD' # True
b = b'ABCD'
65 in b # True
b'A' in b # True
# 索引
b = b'ABCD'
b[0] # 65
b[1] # 66
b[-1] # 68
# 切片
b = b'ABCDEFG'
b[::2] # b'ACEG'
用于序列函数:
len(x), max(x), min(x), sum(x), all(x), any(x)
b = b'ABCDEFG'
len(b) # 7
max(b) # 71
min(b) # 65
sum(b) # 476
bytes 与 str的区别:
bytes 存储字节(0-255)
str 存储Unicode字符(0-65535)
bytes 与 str 的转换:
编码(encode)
str ---------> bytes
b = s.encode(‘utf-8’)
s = 'abc中文'
b = s.encode('utf-8') # b'abc\xe4\xb8\xad\xe6\x96\x87'
解码(decode)
bytes ------------> str
s = b.decode(‘utf-8’)