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
~