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

Тип данных bytearray, байтовый массив

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]