字节数组bytearray
可变的字节序列,相当于bytes
的可变版本。
创建函数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(b'abc')
>>> bytearray("abc")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string argument without an encoding
运算操作
字节数组的操作方式与列表类似
+ += * *=
比较运算:< <= > >= == !=
in /not in
运算符
索引index
切片split
示例
>>> a = bytearray(b"abcde")
>>> a[0]
97
>>> print(a)
bytearray(b'abcde')
>>> a[1:] = bytearray(b'BCDE') #切片赋值
>>> a
bytearray(b'aBCDE')
>>> a[0] = 0x41 #单元素赋值,A的ASCII值0x41
>>> a
bytearray(b'ABCDE')
>>> b = bytes(a) #将字节数组转成字节串
>>> b
b'ABCDE'
>>> c = bytearray(b) #将字节串转成字节数组
>>> c
bytearray(b'ABCDE')
bytearray常用方法
bytes、bytearray与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
:解码