Сообщить об ошибке.

Изменяемый байтовый массив bytearray в Python.

bytearray объекты являются изменяемым аналогом bytes объектов.

Выделенного литерального синтаксиса для объектов bytearray нет, вместо этого они всегда создаются путем вызова конструктора встроенного класса bytearray():

  1. Создание пустого экземпляра: bytearray().
  2. Создание заполненного нулями экземпляра с заданной длиной: bytearray(10).
  3. Из итерируемых целых чисел: bytearray(range(20)).
  4. Копирование существующих двоичных данных через буферный протокол: bytearray(b'Hi!').

Поскольку объекты bytearray являются изменяемыми, они поддерживают:

Две шестнадцатеричные цифры точно соответствуют одному байту и по этому шестнадцатеричные числа являются широко используемым форматом для описания двоичных данных. Соответственно, тип bytearray имеет дополнительный метод класса для чтения данных в этом формате:


bytearray.fromhex(string)::

Метод bytearray.fromhex() возвращает объект bytearray, декодируя данный строковый объект. Строка должна содержать две шестнадцатеричные цифры на байт, при этом пробелы ASCII игнорируются.

>>> bytearray.fromhex('2Ef0 F1f2  ')
# bytearray(b'.\xf0\xf1\xf2')

bytearray.hex()::

Метод bytearray.hex() преобразовывает объект bytearray в его шестнадцатеричное представление. Возвращает строковый объект, содержащий две шестнадцатеричные цифры для каждого байта.

>>> bytearray(b'\xf0\xf1\xf2').hex()
# 'f0f1f2'

Важно: Так как объекты ByteArray являются неизменяемыми последовательностями целых чисел (подобно списку), то для bytearray объекта 'b', b[0] будет целым числом, а b[0:1] - bytearray объектом длины 1. Это контрастирует с текстовыми строками, где индексация и срез будут производить строку длиной 1 символ.

Представление объектов bytearray использует литеральный формат (bytearray(b'...')) так как это часто более полезно и наглядно, чем, например, bytearray([46, 46, 46]). Вы всегда можете преобразовать объект bytearray в список целых чисел с помощью list(b).

Примеры использования:

>>> b = bytearray([46, 46, 46])
>>> b
# bytearray(b'...')
>>> list(b)
# [46, 46, 46]
>>> b = bytearray(range(40,60,2))
>>> b
# bytearray(b'(*,.02468:')
>>> list(b)
[40, 42, 44, 46, 48, 50, 52, 54, 56, 58]