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