Python3 bytearray() 函数详解 将参数转为可变的字节数组
bytearray()函数的主要用途是将参数转换为一个新的字节数组,它是一个可变的整数序列,它的取值范围是0 <= x < 256(0~255),它具有可变序列的大多数方法。
它是Python的内置函数,在python文件中直接可以使用。
语法
bytearray([source[, encoding[, errors]]])
参数
source(必选) - 源对象(可被转换的值),接下来会对source的几种情况进行详解。
encoding(可选) - 虽然它是可选的,但是如果source为字符串时,它是必选的,需要指定字符串的编码格式。
errors(可选) - 这个参数一般不需要设置,默认是'strict(严格)'。还有其他选项,比如'ignore(忽略)'等等。
§ source参数的几种情况详解
如果参数是一个字符串,你必须设置encoding参数来指定的它的编码格式,比较常用的有'utf8'、'gbk'等;
如果参数是一个整数,将会按照整数的数值,使用对应数量的空字节(\x00)来表示。比如参数为5,那么返回的结果则是b'\x00\x00\x00\x00\x00';
如果参数为与buffer接口一致的对象,则从一个字节序列或者buffer复制出一个可变的bytearray对象;
如果参数是可迭代的,则它的每一个值都必须是0~255的整数(不允许是字符串或者其他值),它们将被用作数组的初始化值;
如果参数未设置或者为0,则会创建一个大小为0的数组;如果为''(空)的话会报错的;
返回值
返回一个可变的字节数组。
常用方法
这里列举了一些比较常用的方法。
方法说明
clear()清空
append(n)追加一个字节(n为0~255的整数)
remove(value)删除第一个出现的字节,如果没有则产生ValueError错误
reverse()字节顺序进行反转
decode(encoding='utf-8')转为字符串
find(sub[, start[, end]])查找子字节串
实例
§ 实例1 - 参数为字符串
不设置encoding(字符编码)会报错的。
代码及运行结果:
>>>bytearray('字节数组', 'utf8')
bytearray(b'\xe5\xad\x97\xe8\x8a\x82\xe6\x95\xb0\xe7\xbb\x84')
§ 实例2 - 参数为整数,且必须为正数,负数会报错的。
代码及运行结果:
>>>bytearray(8)
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')
§ 实例3 - 参数为可迭代的
常用可迭代的有:列表(list),元组(tuple),range()方法以及for循环。
代码及运行结果:
>>>bytearray([1,2,3,4,5]) #列表(list)
bytearray(b'\x01\x02\x03\x04\x05')
>>>bytearray((1,2,3,4,5)) #元组(tuple)
bytearray(b'\x01\x02\x03\x04\x05')
>>>bytearray(range(1,6)) #range()方法
bytearray(b'\x01\x02\x03\x04\x05')
>>>bytearray(i for i in range(1,6)) #for循环
bytearray(b'\x01\x02\x03\x04\x05')
§ 实例4 - 参数为不设置或0
代码及运行结果:
>>>bytearray() #不设置参数
bytearray(b'')
>>>bytearray(0) #参数为0
bytearray(b'')
§ 实例5 - 常用方法 - clear()
#先声明一个字节数组并赋值给对象o
>>>o = bytearray(8)
>>>o
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')
#进行清空
>>>o.clear()
>>>o
bytearray(b'')
§ 实例6 - 常用方法 - append()
#先声明一个字节数组并赋值给对象o
>>>o = bytearray(8)
>>>o
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00')
#在最后追加了一个数字2
>>>o.append(2)
>>>o
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x02')
§ 实例7 - 常用方法 - remove()
#先声明一个字节数组并赋值给对象o
>>>o = bytearray([1,2,3,4,5])
>>>o
bytearray(b'\x01\x02\x03\x04\x05')
#删除数字3
>>>o.remove(3)
>>>o
bytearray(b'\x01\x02\x04\x05')
§ 实例8 - 常用方法 - reverse()
#先声明一个字节数组并赋值给对象o
>>>o = bytearray([1,2,3,4,5])
>>>o
bytearray(b'\x01\x02\x03\x04\x05')
#反转顺序
>>>o.reverse()
>>>o
bytearray(b'\x05\x04\x03\x02\x01')
§ 实例9 - 常用方法 - decode()
#先声明一个字节数组并赋值给对象o
>>>o = bytearray('字节数组', 'utf-8')
>>>o
bytearray(b'\xe5\xad\x97\xe8\x8a\x82\xe6\x95\xb0\xe7\xbb\x84')
#默认是utf-8编码格式,需要其他格式需指定encoding参数
>>>o.decode()
'字节数组'
§ 实例10 - 常用方法 - find()
#先声明一个字节数组并赋值给对象o
>>>o = bytearray([1,2,3,4,5])
>>>o
bytearray(b'\x01\x02\x03\x04\x05')
#查找数字3,返回其所在位置的下标。
>>>o.find(3)
2
>>>