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'

Частые ошибки

  1. Отсутствие указания кодировки при использовании строки:

    b = bytes("Привет")  # Ошибка: TypeError
    

    Как исправить: Укажите кодировку, например:

    b = bytes("Привет", "utf-8")
    
  2. Использование неподдерживаемого типа источника:

    b = bytes(3.14)  # Ошибка: TypeError
    

    Как исправить: Используйте только поддерживаемые типы, такие как строки, списки, целые числа и т. д.

  3. Неправильный диапазон значений в списке:

    b = bytes([300])  # Ошибка: ValueError
    

    Как исправить: Убедитесь, что все числа находятся в диапазоне от 0 до 255.

Часто задаваемые вопросы

  1. Чем bytes отличается от bytearray? bytes — это неизменяемый объект, а bytearray можно изменять.

  2. Можно ли использовать bytes для хранения текстовых данных? Да, но для работы с текстом лучше использовать строки, а bytes применять для бинарных данных.

  3. Как преобразовать bytes обратно в строку? Используйте метод decode():

    b = bytes("Привет", "utf-8")
    print(b.decode("utf-8"))  # Вывод: Привет
    
  4. Как создать пустой объект bytes? Просто передайте длину:

    b = bytes(10)
    print(b)  # Вывод: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    
  5. Можно ли изменить содержимое bytes? Нет, bytes неизменяемы. Если нужно изменить данные, используйте bytearray.