MyTetra Share
Делитесь знаниями!
Байты (bytes и bytearray)
08.08.2018
23:56
Раздел: Python - Типы данных в Python


Байты (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,')


 
MyTetra Share v.0.52
Яндекс индекс цитирования