Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 156

type = b'IHDR'

width = 154

height = 141

>>> print(result.width, result.height)

154, 141

206

Глава 7. Работаем с данными профессионально

Преобразование байтов/строк

с помощью функции binascii()

Стандартный модуль binascii содержит функции, которые позволяют вам конвер-

тировать данные в бинарный вид и в различные представления строк: шестнадцате-

ричное (с основанием 16), с основанием 64, uuencoded и др. Например, в следующем

сниппете выведем на экран восьмибайтовый заголовок PNG как последователь-

ность шестнадцатеричных значений вместо смеси символов ASCII и управляющих

последовательностей вида \x xx, которые Python использует для отображения бай-

товых переменных:

>>> import binascii

>>> valid_png_header = b'\x89PNG\r\n\x1a\n'

>>> print(binascii.hexlify(valid_png_header))

b'89504e470d0a1a0a'

В другую сторону это тоже работает:

>>> print(binascii.unhexlify(b'89504e470d0a1a0a'))

b'\x89PNG\r\n\x1a\n'

Битовые операторы

Python предоставляет целочисленные операторы, работающие на уровне битов, их

аналоги имеются в языке С. В табл. 7.7 показаны они все, а также примеры их ис-

пользования для целых чисел a (в десятичной системе счисления 5, в двоичной —

0b0101) и b (в десятичной системе счисления 1, в двоичной — 0b0001).

Таблица 7.7. Целочисленные операции для уровня битов

Оператор

Описание

Пример

Десятичный Двоичный результат

результат

&

Логическое И

a & b

1

0b0001

|

Логическое ИЛИ

a | b

5

0b0101

^

Исключающее ИЛИ

a ^ b

4

0b0100

~