bytearray()

Функция bytearray() создаёт изменяемую последовательность байтов со значениями в диапазоне 0..255. В отличие от bytes, элементы можно менять, добавлять и удалять. Удобно для буферов, накопления данных и побайтовой обработки.

Сигнатура

bytearray()
bytearray(int)
bytearray(iterable_of_ints)
bytearray(string, encoding[, errors])
bytearray(bytes_or_buffer)

Возвращает: объект bytearray.

Примеры

Создание разными способами:

a = bytearray()
b = bytearray(5)
c = bytearray([72, 101, 108, 108, 111])
d = bytearray("Привет", "utf-8")
print(a, b, c, d, sep="\n")
bytearray(b'')
bytearray(b'\x00\x00\x00\x00\x00')
bytearray(b'Hello')
bytearray(b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82')

Изменение содержимого:

buf = bytearray(b"Hello")
buf[0] = ord("J")
buf.append(ord("!"))
print(buf)
bytearray(b'Jello!')

Накопление данных в буфере:

packet = bytearray()
packet.extend(b"\xAA\x55")
packet.append(0x10)
packet += b"DATA"
print(packet)
print(len(packet))
bytearray(b'\xaaU\x10DATA')
7

Декодирование обратно в строку:

ba = bytearray("AlashEd", "utf-8")
print(ba.decode("utf-8"))
AlashEd

XOR двух буферов:

key = bytearray([0x5A] * 5)
data = bytearray(b"Hello")
enc = bytearray(d ^ k for d, k in zip(data, key))
print(enc)
dec = bytearray(e ^ k for e, k in zip(enc, key))
print(dec.decode())
bytearray(b'\x12?6657')
Hello

См. также

Примечание

Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.