【容器类型:】
【字节串bytes 和 字节数组bytearray】
1byte = 8bit
11111111 = 255
最大数0xFF = 255
最小数0x00 = 0
-
容器类型:
str 、 list 、 tuple 、 dict 、 set 、 frozenset、bytes、bytearray -
字节串(bytes)(不可变的):
-
作用:
存储以字节为单位的数据 -
说明:
字节串是不可变的字节序列
字节是0~255之间的整数 -
字节串的表示方式:
- 创建空字节串的字面值:
b’’
b""
b""""""
B’’
B""
B"""""" - 创建非空字节串的字面值:
b’ABCD’
b’\x41\x41’
示例:
>>> b = '' >>> b '' >>> type(b) <class 'str'> >>> b = b'' >>> b b'' >>> type(b) <class 'bytes'> ---------------------- >>> b'ABCD' b'ABCD' >>> b'\x41' b'A' >>> b'\x41\42' b'AB' -----------------------
- 创建空字节串的字面值:
-
字节串的构造函数(bytes):
bytes() 生成一个空的字节串,等同于 b’’
bytes(整形可迭代对象) 用可迭代对象初始化一个字节串
bytes(整数n) 生成n个值为0的字节串
bytes(字符串,encoding = ‘utf-8’)
用字符串的转换编码生成一个字节串
示例:>>> bytes([10,20,30,40,50,60,65,66,67,255]) b'\n\x14\x1e(2<ABC\xff' >>> bytes(range(97,97+26)) b'abcdefghijklmnopqrstuvwxyz' >>> bytes(10) b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' >>> bytes('hello','ascii') b'hello' >>> bytes('hello中国','utf-8') b'hello\xe4\xb8\xad\xe5\x9b\xbd' ---------------------------------------------------------
-
字节串的运算:
+ += * *=
< <= >= > == !=
in/not in
索引/切片
示例:# 以下是算术运算符 >>> b = b'abc' + b'123' >>> b b'abc123' >>> b += b'ABC' >>> b b'abc123ABC' # 以下是比较运算符 >>> b'ABC'<b'ABD' True # 以下是in/not in 的用法 >>> b = b'ABCD' >>> 65 in b True >>> # 65就是A的值 >>> 'A' in b(这样是不可以的) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: a bytes-like object is required, not 'str' >>> b'A' in b(这样才可以) True # 以下是索引 >>> b = b'ABCD' >>> b[0] 65 >>> b[1] 66 # 以下是切片 >>> b[1:] b'BCD' ----------------------------------------------------------
-
字节串的函数:
len(x) , max(x) , min(x) , sum(x) , all(x) , any(x) -
bytes与str的区别:
bytes 存储字节(0~255)
str 存储Unicode字符(0~65535) -
bytes与str的转换:
编码(encode)
str ------------------> bytesb = s.encode(‘utf-8’)
解码(decode)
bttes ------------------> str
示例:>>> s = 'abc中文' >>> len(s) 5 >>> b = s.encode('utf-8') >>> b b'abc\xe4\xb8\xad\xe6\x96\x87' >>> s2 = b.decode('utf-8') >>> s2 'abc中文' ------------------------------------------
-
字节数组bytearray(是可变的):
可变的字节序列
-
创建字节数组的构造函数:
bytearray() 创建空的字节数组
bytearray(整数)
bytearray(整形可迭代对象)
bytearray(字符串,encoding = ‘utf-8’)
注:以上参数等同于字节串
示例:>>> bytearray() bytearray(b'') >>> bytearray(10) bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00') >>> bytearray([65,66,67]) bytearray(b'ABC') >>> bytearray(b'hello') bytearray(b'hello')
-
字节数组的运算:
+ += * *=
< <= > >= == !=
in/not in
索引/切片(字节数组支持索引和切片赋值,规则与列表相同)
示例:>>> ba = bytearray(b'helllo') >>> ba[0] = 72 >>> ba bytearray(b'Helllo') >>> ba[::2] = [65,66,67] >>> ba bytearray(b'AeBlCo')
-
bytearray的方法:
B.clear() 清空字节数组
B.append(n) 追加一个字节(n为0~255的整数)
B.remove(value) 删除第一个出现的字节,如果没有出现,则产生ValueError错误
B.reverse() 字节的顺序进行反转
B.decode(encoding = ‘utf-8’) # 解码
B.find(sub[,start[,end]]) 查找