python中bytes、bytearray字节
注意:当使用for循环时,不能一边迭代该列表,同时删除或者增加该序列,因为使用for循环
它首先会确定序列的长度然后去遍历,不能每次都变化
bytes、bytearray
Python3引入两个新类型 bytes 不可变字节序列 bytearray 字节数组 可变
字符串与bytes
字符串是字符组成的有序序列,字符可以使用编码来理解
bytes是字节组成的有序的不可变的序列
bytearray是字节组成的有序的可变的序列
编码与解码
字符串按照不同的字符集编码encode返回字节序列bytes encode(encoding='utf-8',errors='strict') --->bytes #返回字节 字节序列安装不通的字符集解码decode返回字符串 bytes.decode(encoding='utf-8',errors='strict') ----> str #返回字符串 bytearray.decode(encoding='utf-8',errors='strict') ----> str #返回字符串
bytes定义
bytes定义: bytes() 空bytes bytes(int) 指定字节的bytes,被0填充 bytes(iterable_of_ints) --> bytes[0,255]的int组成的可迭代对象 bytes(string,encoding[,errors]) --> bytes 等价于string.encode() 返回不可变对象 bytes(bytes_or_buffer) ---> immutable copy bytes_or_buffer 从一个字节序列或者buffer复制出一个新的不可变的bytes对象 使用b前缀定义 只允许基本ASCII使用字符形式b'abc9' 使用十六进制表示b"\x41\x61"
bytes操作
bytes操作: 和str类型类似,都是不可变类型,所有很多方法一样,只不过bytes的方法,输入的是bytes,输出是bytes b‘abcdef’.replace(b'f',b'k') b'abc'.find(b'b') 类方法 bytes.fromhex(staring) string必须是2个字符的16进制的形式,‘6162 6a 6b’ 空格将被忽略 bytes.fromhex('6162 09 6a 6b00') hex() #返回16进制表示的字符串 abc.encode().hex() 索引: b'abcde'[2] 返回该字节对应的数,int类型
bytearray定义
bytearray定义: bytearray() 空bytearray bytearray(int) 指定字节的bytearray,被0填充 bytearray(iterable_of_ints) --> bytearray[0,255]的int组成的可迭代对象 bytearray(string,encoding[,errors]) --> bytearray近视于string.encode()不过返回可变对象 bytearray(bytearray_or_buffer) ---> immutable copy bytearray_or_buffer 从一个字节序列或者buffer复制出一个新的不可变的bytes对象 注意:b前置定义的类型是bytes类型
bytearray操作
bytearray操作: 和bytes类型的方法相同 bytearray(b‘abcdef’).replace(b'f',b'k') bytearray(b'abc').find(b'b') 类方法 bytearray.fromhex(string) string必须是2个字符的16进制的形式,‘6162 6a 6b’ 空格将被忽略 bytearray.fromhex('6162 09 6a 6b00') hex() #返回16进制表示的字符串 bytearray(abc.encode()).hex() 索引: bytearray(b'abcde')[2] 返回该字节对应的数,int类型 b = bytearray() append(int)尾部追加一个元素 b.append(1) insert(index,int) 在指定元素位置插入元素 b.insert(1,98) extend(iterable_of_this)将一个可迭代的整数集合追加到bytearray b.extend([66,67,68]) pop(index=-1)从指定索引上移除元素,默认从尾部移除 b.pop() remove(value) 知道第一个value移除,找不到包valueerror b.remove(1) 注意:上述方法若需要使用int类型,值在[0,255] clear() 清空bytearray b.clear() reverse() 翻转bytearray,就地修改 b.reverse()
线性解构
线性解构: 可迭代 for ... in len()可以获取长度 通过下标可以访问 可以切片 学过的线性结构 列表、元组、字符串、bytes、bytearray
切片
切片: 通过索引区间访问线性结构的一段数据 sequence[start:stop] 表示返回[start,stop)区间的子序列 支持负索引 start为0,可以省略 stop为末尾,可以省略 超过上界(右边界),就取到末尾,超过下界(左边界),取到开头 start一定要在stop的左边 {:} 表示从头到尾,全部元素被取出,等效于copy()方法 步长切片: [start:stop:step] step为步长,可以正、负整数,默认为1 step要和start,stop同向,否则返回空序列 列如: 'www.magedu.com'[4:10:2]