python bytes 改值_Python3 bytes() 函数详解 将参数转为不可变的字节数组

Python3 bytes() 函数详解 将参数转为不可变的字节数组

bytes()函数的主要用途是将参数转换为一个新的字节数组,它是一个不可变的整数序列,它的取值范围是0 <= x < 256(0~255),它是bytearray()的不可变版本。

它是Python的内置函数,在python文件中直接可以使用。

语法

bytes([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的数组;如果为''(空)的话会报错的;

返回值

返回一个不可变的字节数组。

常用方法

这里列举了一些比较常用的方法,它不像bytearray可以改变数组的内容,所以类似清空、追加、删除、替换之类对数组有所改变的方法都不能用。

方法说明

decode(encoding='utf-8')转为字符串

find(sub[, start[, end]])查找子字节串

实例

§ 实例1 - 参数为字符串

不设置encoding(字符编码)会报错的。

代码及运行结果:

>>>bytes('字节数组', 'utf8')

b'\xe5\xad\x97\xe8\x8a\x82\xe6\x95\xb0\xe7\xbb\x84'

§ 实例2 - 参数为整数,且必须为正数,负数会报错的。

代码及运行结果:

>>>bytes(8)

b'\x00\x00\x00\x00\x00\x00\x00\x00'

§ 实例3 - 参数为可迭代的

常用可迭代的有:列表(list),元组(tuple),range()方法以及for循环。

代码及运行结果:

>>>bytes([1,2,3,4,5]) #列表(list)

b'\x01\x02\x03\x04\x05'

>>>bytes((1,2,3,4,5)) #元组(tuple)

b'\x01\x02\x03\x04\x05'

>>>bytes(range(1,6)) #range()方法

b'\x01\x02\x03\x04\x05'

>>>bytes(i for i in range(1,6)) #for循环

b'\x01\x02\x03\x04\x05'

§ 实例4 - 参数为不设置或0

代码及运行结果:

>>>bytes() #不设置参数

b''

>>>bytes(0) #参数为0

b''

§ 实例5 - 常用方法 - decode()

#先声明一个字节数组并赋值给对象o

>>>o = bytes('字节数组', 'utf-8')

>>>o

b'\xe5\xad\x97\xe8\x8a\x82\xe6\x95\xb0\xe7\xbb\x84'

#默认是utf-8编码格式,需要其他格式需指定encoding参数

>>>o.decode()

'字节数组'

§ 实例6 - 常用方法 - find()

#先声明一个字节数组并赋值给对象o

>>>o = bytes([1,2,3,4,5])

>>>o

b'\x01\x02\x03\x04\x05'

#查找数字3,返回其所在位置的下标。

>>>o.find(3)

2

>>>

你可能感兴趣的:(python,bytes,改值)