Python bytearray() 函数

2016年10月16日 发表评论 阅读评论

一、bytearray()用法

bytearray() 方法为python内置函数,其用于返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。其语法如下:

class bytearray([source[, encoding[, errors]]])

  • 如果 source 为整数,则返回一个长度为 source 的初始化数组;
  • 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
  • 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
  • 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
  • 如果没有输入任何参数,默认就是初始化数组为0个元素。

二、示例

1、source为字符串时

>>> s = 'xyz'
>>> b = bytearray(str(s),'utf8')
>>> print b
xyz
>>> print b[1]
121
>>> print b[0]
120
>>> print b[2]
122
>>> b = bytearray(u'中国','utf8')
>>> print b
中国
>>> len(b)
6
>>> b[0]
228
>>> b[5]
189
>>> b = bytearray('中国','utf8')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
>>> 

可以看出,我上面用xyz值时,经bytearray函数处理过后,返回的是字符的ASCII码值(标准ASCII码128位,加扩展位为256位,但这里取值和标准ASCII能对上,和扩展位是对应不上的)。可以看出在使用中文时,必须指定为unicode类型,不然会报超出ascii 128位的范围。ASCII码表对应如下(点击图片看大图):

ascii128

2、source参数为整数时

>>> b = bytearray(5)
>>> print b
>>> print len(b)
5
>>> print b[0]
0
>>> print b[1]
0
>>> bytearray(5)
bytearray(b'\x00\x00\x00\x00\x00')

其返回这个整数所指定长度的空字节数组。

3、source参数为object对象时

当source参数为实现了buffer接口的object对象时,那么将使用只读方式将字节读取到字节数组后返回;当source参数是一个可迭代对象,那么这个迭代对象的元素都必须符合0 <= x < 256,以便可以初始化到数组里。如下:

>>> b = bytearray([1,2,3,4,5])
>>> print len(b)
5
>>> print b[1]
2
>>> b = bytearray([1,2,3,4,5,256])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: byte must be in range(0, 256)




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.