1 序列
常见的序列有: list tuple str bytes(字节串) bytearray
2 字节数组 bytearray
可变的字节序列, 相当于 bytes 的可变版本
3 创建函数 bytearray
创建 bytearray 对象的方法规则
bytearray()
bytearray(整数 n)
bytearray(整型可迭代对象)
bytearray(b 字符串)
bytearray(字符串, encoding=utf-8)
示例:
- >>> bytearray()
- bytearray(b)
- >>> bytearray([1,2,3])
- bytearray(b\x01\x02\x03)
- >>> bytearray(["a","b","c"])
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- TypeError: an integer is required
- >>> bytearray(3)
- bytearray(b\x00\x00\x00)
- >>> bytearray("abc",encoding="utf-8")
- bytearray(babc)
- >>> bytearray("abc")
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- TypeError: string argument without an encoding
4 运算操作
字节数组的操作方式与列表类似
+ += * *=
比较运算: < <= > >= == !=
in /not in 运算符
索引 index / 切片 slice
示例
- >>> a = bytearray(b"abcde")
- >>> a[0]
- 97
- >>> print(a)
- bytearray(babcde)
- >>> a[1:] = bytearray(bBCDE) #切片赋值
- >>> a
- bytearray(baBCDE)
- >>> a[0] = 0x41 #单元素赋值, A 的 ASCII 值 0x41
- >>> a
- bytearray(bABCDE)
- >>> b = bytes(a) #将字节数组转成字节串
- >>> b
- bABCDE
- >>> c = bytearray(b) #将字节串转成字节数组
- >>> c
- bytearray(bABCDE)
5 bytearray 常用方法
方法 | 说明 |
---|---|
ba 代表字节数组 | |
ba.clear() | 清空 |
ba.append(n) | 追加一个字节(n 为 0~255 的整数) |
ba.remove(value) | 删除第一个出现的字节, 如果没有则产生 ValueError 错误 |
ba.reverse() | 字节顺序进行反转 |
ba.decode(encoding=‘utf-8‘) | 转为字符串 |
ba.find(sub[, start[,end]]) | 查找子字节串 |
6 bytesbytearray 与 str 之间的区别
字节串 bytes 字节数组 bytearray 是二进制数据组成的序列, 其中每个元素由 8bit 二进制 (同 1byte, 同 2 位 16 进制数, 同 0~255) 组成
字节数计算机的语言, 字符串是人类的语言, 他们之间通过编码表形成一一对应关系
最小的 ASCII 编码表只需要一位字节, 且只占用了其中 [31,127] 的码位;
str 存储 unicodel 6 字符(0~65535)
- bytes/bytearry = str.encode(encoding="utf-8")
- str = bytes/bytearray.decode(encoding="utf-8")
encode: 编码, decode: 解码
来源: http://www.bubuko.com/infodetail-2493615.html