天天看點

python中bytearray函數_Python内置函數—bytearray

英文文檔及翻譯

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

Return a new array of bytes. The bytearray class is a mutable sequence of integers in the range 0 <= x < 256. It has most of the usual methods of mutable sequences, described in Mutable Sequence Types, as well as most methods that the bytes type has, see Bytes and Bytearray Operations.

The optional source parameter can be used to initialize the array in a few different ways:

If it is a string, you must also give the encoding (and optionally, errors) parameters; bytearray() then converts the string to bytes using str.encode().

If it is an integer, the array will have that size and will be initialized with null bytes.

If it is an object conforming to the buffer interface, a read-only buffer of the object will be used to initialize the bytes array.

If it is an iterable, it must be an iterable of integers in the range 0 <= x < 256, which are used as the initial contents of the array

def __init__(self, source=None, encoding=None, errors='strict'): # known special case of bytearray.__init__

"""

bytearray(iterable_of_ints) -> bytearray

bytearray(string, encoding[, errors]) -> bytearray

bytearray(bytes_or_buffer) -> mutable copy of bytes_or_buffer

bytearray(int) -> bytes array of size given by the parameter initialized with null bytes

bytearray() -> empty bytes array

Construct a mutable bytearray object from:

- an iterable yielding integers in range(256)

- a text string encoded using the specified encoding

- a bytes or a buffer object

- any object implementing the buffer API.

- an integer

# (copied from class doc)

"""

pass

傳回一個新的位元組數組。

bytearray類是range 0 < = x < 256的一個可變序列。

它有大多數可變序列的常用方法,在可變序列類型中描述,以及大多數位元組類型的方法,參見位元組和Bytearray操作。

可選的源參數可以用幾種不同的方式來初始化數組:

如果它是一個字元串,那麼您還必須給出編碼(以及可選的錯誤)參數;bytearray()然後使用str.encode()将字元串轉換為位元組。

如果它是一個整數,那麼數組将具有這個大小,并将用null位元組初始化。

如果它是符合緩沖區接口的對象,則将使用對象的隻讀緩沖區來初始化位元組數組。

如果它是可疊代的,那麼它必須是range 0 < = x < 256的整數的疊代,它被用作數組的初始内容

如果沒有參數,則建立一個大小為0的數組。

說明

傳回值為一個新的位元組數組

當3個參數都不傳的時候,傳回長度為0的位元組數組

#!/usr/bin/python3

b = bytearray()

print(b)

print(len(b))

結果:

bytearray(b'')

當source參數為字元串時,encoding參數也必須提供,函數将字元串使用str.encode方法轉換成位元組數組

b = bytearray('中文')

結果:

Traceback (most recent call last):

File "D:/py/day001/day1/test.py", line 3, in

b = bytearray('中文')

TypeError: string argument without an encoding

encoding參數也必須提供,函數将字元串使用str.encode方法轉換成位元組數組

b = bytearray('中文', 'utf-8')

print(b)

print(len(b))

結果:

bytearray(b'\xe4\xb8\xad\xe6\x96\x87')

6

當source參數為整數時,傳回這個整數所指定長度的空位元組數組

#!/usr/bin/python3

b = bytearray(5)

print(b)

print(len(b))

執行結果:

bytearray(b'\x00\x00\x00\x00\x00')

5

當source參數為實作了buffer接口的object對象時,那麼将使用隻讀方式将位元組讀取到位元組數組後傳回

#!/usr/bin/python3

b = bytearray([1,2,3,4,5])

print(b)

print(len(b))

執行結果:

bytearray(b'\x01\x02\x03\x04\x05')

5

當source參數是一個可疊代對象,那麼這個疊代對象的元素都必須符合0 <= x < 256,以便可以初始化到數組裡

#!/usr/bin/python3

b = bytearray([1,2,3,4,5,256])

print(b)

print(len(b))

執行結果:

Traceback (most recent call last):

File "D:/py/day001/day1/test.py", line 3, in

b = bytearray([1,2,3,4,5,256])

ValueError: byte must be in range(0, 256)