Python объект в байты

bytearray и bytes в Python

Метод bytearray() в Python возвращает объект bytearray, который представляет собой массив заданных байтов.

bytearray([source[, encoding[, errors]]])

Метод bytearray() возвращает объект bytearray, который представляет собой изменяемую (можно изменять) последовательность целых чисел в диапазоне 0

Если вам нужна неизменная версия, используйте метод bytes().

Параметры

bytearray() принимает три необязательных параметра:

  • источник (необязательно) — источник для инициализации массива байтов.
  • кодировка (необязательно) — если источником является строка, кодировка строки.
  • ошибки (необязательно) — если источником является строка, действие, которое нужно предпринять при сбое преобразования кодировки (Подробнее: Кодировка строки)

Параметр источника можно использовать для инициализации массива байтов следующими способами:

Различные параметры источника

Тип Описание
Строка Преобразует строку в байты с помощью str.encode(). Также необходимо указать кодировку и, при необходимости, ошибки.
Целое число Создает массив заданного размера, все инициализированные нулевым значением.
Объект Буфер объекта только для чтения будет использоваться для инициализации массива байтов.
Итерабельный Создает массив размером, равным количеству итераций, и инициализируется повторяющимися элементами. Должен быть итерируемым целыми числами от 0
Нет источника (аргументы) Создает массив размером 0.

Метод bytearray() возвращает массив байтов заданного размера и значений инициализации.

Пример 1: массив байтов из строки

string = "Python is interesting." # string with encoding 'utf-8' arr = bytearray(string, 'utf-8') print(arr)
bytearray(b'Python is interesting.')
size = 5 arr = bytearray(size) print(arr)
bytearray(b'\x00\x00\x00\x00\x00')

Пример 3: из повторяемого списка

rList = [1, 2, 3, 4, 5] arr = bytearray(rList) print(arr)
bytearray(b'\x01\x02\x03\x04\x05')

Метод bytes() возвращает неизменяемый объект байтов, инициализированный заданным размером и данными.

bytes([source[, encoding[, errors]]])

bytes() возвращает объект байтов, который представляет собой неизменяемую (не может быть изменена) последовательность целых чисел в диапазоне 0

Если вы хотите использовать изменяемую версию, используйте метод bytearray().

bytes() принимает три необязательных параметра:

  • источник (необязательно) — источник для инициализации массива байтов.
  • кодировка (необязательно) — если источником является строка, кодировка строки.
  • ошибки (необязательно) — если источником является строка, действие, которое нужно предпринять при сбое преобразования кодировки.

Параметр источника можно использовать для инициализации массива байтов следующими способами:

Различные параметры источника

Тип Описание
Строка Преобразует строку в байты с помощью str.encode(). Также необходимо указать кодировку и, при необходимости, ошибки.
Целое число Создает массив заданного размера, все инициализированные нулевым значением
Объект Буфер объекта только для чтения будет использоваться для инициализации массива байтов.
Итерабельный Создает массив размером, равным количеству итераций, и инициализируется повторяющимися элементами. Должен быть итерируемым целыми числами от 0
Нет источника (аргументы) Создает массив размером 0

Метод bytes() возвращает объект байтов заданного размера и значений инициализации.

Пример 1: преобразование строки в байты

string = "Python is interesting." # string with encoding 'utf-8' arr = bytes(string, 'utf-8') print(arr)

Пример 2: создать байт заданного целого размера

size = 5 arr = bytes(size) print(arr)

Пример 3: преобразование итеративного списка

rList = [1, 2, 3, 4, 5] arr = bytes(rList) print(arr)

Источник

Функция bytes() в Python

Python bytes() — встроенная функция, которая возвращает объект байтов, который представляет собой неизменяемую последовательность целых чисел в диапазоне 0

Синтаксис

Принимает три необязательных параметра, а именно:

  • source -> Источник, который инициализирует массив байтов
  • encoding -> Кодировка source строки (может быть UTF-8 и т. д.).
  • errors -> Поведение функции при сбое кодирования исходной строки.
byte_array = bytes(source, encoding, errors)

Поскольку все три аргумента являются необязательными, мы можем передать пустую строку, чтобы сгенерировать пустой массив байтов (массив байтов размера 0).

В зависимости от типа source параметра будет инициализирован соответствующий массив байтов.

  • Если source является строка, Python bytes() преобразует строку в байты с помощью str.encode() . Следовательно, мы также должны предоставить кодировку и, возможно, ошибки, поскольку encode() используется для обработки строки.
  • Если source является целым числом, bytes() создаст массив заданного целочисленного размера, все инициализированные значением NULL.
  • Если source относится к классу Object , буфер Object , доступный только для чтения, будет использоваться для инициализации массива байтов.
  • Если source является итерируемым, он должен быть итеративным целых чисел в диапазоне 0

Если source — None , это приведет к TypeError , поскольку он не может преобразовать объект None в массив байтов.

Чтобы лучше понять функцию, давайте рассмотрим несколько примеров.

Без аргументов

b = bytes() print(b) c = bytes(None) print(c)
b'' TypeError: cannot convert 'NoneType' object to bytes

С исходной строкой

Любая строка, предоставленная без кодировки, вызовет TypeError .

Точно так же попытка изменить объект bytes также приведет к тому же исключению, поскольку он неизменен по своей природе.

try: a = bytes('Hello from AskPython') except TypeError: print('We need to specify string encoding always!') b = bytes('Hello from AskPython', 'UTF-8') print(type(b), b) try: b[0] = 10 except TypeError: print('byte objects are immutable!')
We need to specify string encoding always! b'Hello from AskPython' byte objects are immutable!

С исходным целым числом

Целое число инициализирует это количество объектов байтовых элементов в массиве.

 b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

Как видите, объект bytes представляет собой инициализированный нулевым массивом, состоящий из 10 элементов.

С итеративным источником

Это инициализирует массив с len(iterable) числом элементов, каждый из которых имеет значение, равное соответствующему элементу на итерируемом.

Доступ к значениям байтовых массивов можно получить с помощью обычной итерации, но их нельзя изменить, поскольку они неизменяемы.

a = bytes([1, 2, 3]) print(type(a), a) print('Length =', len(a)) # To access the byte array values, we can iterate through it! for byte_obj in a: print(byte_object)
 b'\x01\x02\x03' Length = 3 1 2 3

Все остальное на Iterable приведет к TypeError

>>> a = bytes([1, 2, 3, 'Hi']) Traceback (most recent call last): File "", line 1, in TypeError: 'str' object cannot be interpreted as an integer

Источник

Читайте также:  Html style iframe content
Оцените статью