bytearray
Класс bytearray создаёт изменяемую последовательность байтов. Это полезно, если вы хотите работать с бинарными данными, которые могут быть изменены без создания новых объектов.
Синтаксис
bytearray([source[, encoding[, errors]]])
Аргументы
- source (опционально):
- Что означает: Источник данных, из которого создаётся bytearray.
- Возможные значения: Строка (с указанием кодировки), целое число, байтовый объект, объект поддерживающий протокол буфера, либо целое число (заполняет массив нулями указанной длины).
- encoding (опционально):
- Что означает: Кодировка, используемая для преобразования строки в байты.
- Возможные значения: Любая поддерживаемая кодировка, например utf-8, ascii.
- errors (опционально):
- Что означает: Стратегия обработки ошибок кодировки.
- Возможные значения: strict (по умолчанию), ignore, replace и др.
Возвращаемое значение
Возвращает объект bytearray, содержащий изменяемую последовательность байтов.
Примеры использования
# Создание из строки
ba = bytearray("Привет", "utf-8")
print(ba) # Вывод: bytearray(b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82')
# Создание из списка целых чисел
ba = bytearray([65, 66, 67])
print(ba) # Вывод: bytearray(b'ABC')
# Создание пустого bytearray указанной длины
ba = bytearray(5)
print(ba) # Вывод: bytearray(b'\x00\x00\x00\x00\x00')
# Изменение значения
ba = bytearray(b"hello")
ba[0] = 72 # Заменяем первый байт на код 'H'
print(ba) # Вывод: bytearray(b'Hello')
# Преобразование обратно в строку
ba = bytearray(b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82')
print(ba.decode("utf-8")) # Вывод: Привет
Частые ошибки
Отсутствие указания кодировки при использовании строки:
ba = bytearray("Привет") # Ошибка: TypeError
Как исправить: Укажите кодировку, например:
ba = bytearray("Привет", "utf-8")
Использование неподдерживаемого типа источника:
ba = bytearray(3.14) # Ошибка: TypeError
Как исправить: Используйте только поддерживаемые типы, такие как строка, список, целое число и т. д.
Выход за пределы допустимого диапазона при изменении значений:
ba = bytearray(b"abc") ba[0] = 300 # Ошибка: ValueError
Как исправить: Убедитесь, что значения находятся в диапазоне 0–255.
Часто задаваемые вопросы
Чем bytearray отличается от bytes? bytes — это неизменяемый объект, тогда как bytearray можно изменять после создания.
Можно ли использовать bytearray для хранения текстовых данных? Да, но для работы с текстом лучше использовать строки, а bytearray применять для работы с бинарными данными.
Как добавить элементы в bytearray? Используйте методы, такие как append или extend:
ba = bytearray(b"abc") ba.append(100) # Добавляем байт с кодом 100 print(ba) # Вывод: bytearray(b'abcd')
Как преобразовать bytearray обратно в bytes? Используйте функцию bytes:
ba = bytearray(b"hello") b = bytes(ba) print(b) # Вывод: b'hello'