Байты (bytes и bytearray)
Байтовые строки в Python - что это такое и с чем это едят? Байтовые строки очень похожи на обычные строки, но с некоторыми отличиями. Попробуем выяснить, с какими.
Что такое байты? Байт - минимальная единица хранения и обработки цифровой информации. Последовательность байт представляет собой какую-либо информацию (текст, картинку, мелодию...).
Создаём байтовую строку:
>>> b'bytes' b'bytes' >>> 'Байты'.encode('utf-8') b'\xd0\x91\xd0\xb0\xd0\xb9\xd1\x82\xd1\x8b' >>> bytes('bytes', encoding = 'utf-8') b'bytes' >>> bytes([50, 100, 76, 72, 41]) b'2dLH)'
Если первые три способа нам уже известны (тут, тут и тут), то последний нужно пояснить. Функция bytes принимает список чисел от 0 до 255 и возвращает байты, получающиеся применением функции chr.
>>> chr(50) '2' >>> chr(100) 'd' >>> chr(76) 'L'
Что делать с байтами? Хотя байтовые строки поддерживают практически все строковые методы, с ними мало что нужно делать. Обычно их надо записать в файл / прочесть из файла и преобразовать во что-либо другое (конечно, если очень хочется, то можно и распечатать). Для преобразования в строку используется метод decode:
>>> b'\xd0\x91\xd0\xb0\xd0\xb9\xd1\x82\xd1\x8b'.decode('utf-8') 'Байты'
Bytearray
Bytearray в python - массив байт. От типа bytes отличается только тем, что является изменяемым. Про него, в общем-то, больше рассказать нечего.
>>> b = bytearray(b'hello world!') >>> b bytearray(b'hello world!') >>> b[0] 104 >>> b[0] = b'h' Traceback (most recent call last): File "", line 1, in b[0] = b'h' TypeError: an integer is required >>> b[0] = 105 >>> b bytearray(b'iello world!') >>> for i in range(len(b)): ... b[i] += i ... >>> b bytearray(b'ifnos%}vzun,')