bytearray
объекты являются изменяемым аналогом bytes
объектов.
Выделенного литерального синтаксиса для объектов bytearray
нет, они всегда создаются путем вызова конструктора встроенного класса bytearray()
:
bytearray()
.bytearray(10)
.bytearray(range(20))
.bytearray(b'Hi!')
.Поскольку объекты bytearray
являются изменяемыми, они поддерживают:
bytes
и 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. (Это контрастирует с текстовыми строкамиstr
, где и взятие по индексу, и операция среза дадут строку длины 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]