binascii.md
1> **Источник:** https://python-all.ru/3.0/library/binascii.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `binascii` – преобразование между двоичным и ASCII89Модуль `binascii` содержит ряд методов для преобразования между двоичным представлением и различными ASCII-кодированными двоичными форматами. Обычно эти функции не используются напрямую – вместо этого применяются модули-обёртки, такие как [`uu`](https://python-all.ru/3.0/library/uu.html#module-uu), [`base64`](https://python-all.ru/3.0/library/base64.html#module-base64) или [`binhex`](https://python-all.ru/3.0/library/binhex.html#module-binhex). Модуль `binascii` содержит низкоуровневые функции, написанные на C для повышения скорости, которые используются высокоуровневыми модулями.1011Модуль `binascii` определяет следующие функции:1213#### `[binascii.a2b_uu]binascii.a2b_uu(string)`1415Преобразует одну строку данных в кодировке UUencode обратно в двоичный вид и возвращает двоичные данные. Строки обычно содержат 45 двоичных байт, за исключением последней. После данных строки могут следовать пробельные символы.1617#### `[binascii.b2a_uu]binascii.b2a_uu(data)`1819Преобразует двоичные данные в строку ASCII-символов; возвращаемое значение – это преобразованная строка, включающая символ новой строки. Длина2021*data*2223должна быть не более 45.2425#### `[binascii.a2b_base64]binascii.a2b_base64(string)`2627Преобразует блок данных в кодировке base64 обратно в двоичный вид и возвращает двоичные данные. Можно передать одновременно несколько строк.2829#### `[binascii.b2a_base64]binascii.b2a_base64(data)`3031Преобразует двоичные данные в строку ASCII-символов в кодировке base64. Возвращаемое значение – преобразованная строка, включающая символ новой строки. Длина3233*data*3435должна быть не более 57 для соответствия стандарту base64.3637#### `[binascii.a2b_qp]binascii.a2b_qp(string[, header])`3839Преобразует блок данных в кодировке quoted-printable обратно в двоичный вид и возвращает двоичные данные. Можно передать одновременно несколько строк. Если необязательный аргумент4041*header*4243присутствует и равен true, символы подчёркивания будут декодированы как пробелы.4445#### `[binascii.b2a_qp]binascii.b2a_qp(data[, quotetabs, istext, header])`4647Преобразует двоичные данные в строку (строки) символов ASCII в кодировке quoted-printable encoding. Возвращаемое значение – преобразованная строка (строки). Если необязательный аргумент4849*quotetabs*5051присутствует и равен true, все табуляции и пробелы будут закодированы. Если необязательный аргумент5253*istext*5455присутствует и равен true, символы новой строки не кодируются, но завершающие пробельные символы будут закодированы. Если необязательный аргумент5657*header*5859присутствует и равен true, пробелы будут закодированы как символы подчеркивания в соответствии с RFC1522. Если необязательный аргумент6061*header*6263присутствует и равен false, символы новой строки также будут закодированы; в противном случае преобразование перевода строки может повредить поток двоичных данных.6465#### `[binascii.a2b_hqx]binascii.a2b_hqx(string)`6667Преобразует ASCII-данные в формате binhex4 в двоичный код без выполнения RLE-декомпрессии. Строка должна содержать полное количество двоичных байт, или (в случае последней части данных binhex4) оставшиеся биты должны быть нулевыми.6869#### `[binascii.rledecode_hqx]binascii.rledecode_hqx(data)`7071Выполняет RLE-декомпрессию данных в соответствии со стандартом binhex4. Алгоритм использует7273`0x90`7475после байта как индикатор повтора, за которым следует количество. Количество7677`0`7879указывает значение байта8081`0x90`8283. Функция возвращает декомпрессированные данные, если только входные данные не заканчиваются одиноким индикатором повтора – в этом случае возбуждается исключение8485[`Incomplete`](https://python-all.ru/3.0/library/binascii.html#binascii.Incomplete)8687.8889#### `[binascii.rlecode_hqx]binascii.rlecode_hqx(data)`9091Выполняет RLE-сжатие данных9293*data*9495в стиле binhex4 и возвращает результат.9697#### `[binascii.b2a_hqx]binascii.b2a_hqx(data)`9899Выполняет перевод двоичного кода в ASCII в формате hexbin4 и возвращает результирующую строку. Аргумент уже должен быть RLE-кодированным и иметь длину, кратную 3 (за исключением, возможно, последнего фрагмента).100101#### `[binascii.crc_hqx]binascii.crc_hqx(data, crc)`102103Вычисляет значение CRC binhex4 для104105*data*106107, начиная с начального108109*crc*110111, и возвращает результат.112113#### `[binascii.crc32]binascii.crc32(data[, crc])`114115Вычисляет CRC-32 – 32-битную контрольную сумму данных, начиная с начального crc. Это согласуется с контрольной суммой ZIP-файлов. Поскольку алгоритм предназначен для использования в качестве контрольной суммы, он не подходит в качестве универсальной хеш-функции. Используется следующим образом:116117```python118print(binascii.crc32("hello world"))119# Или двумя частями:120crc = binascii.crc32("hello")121crc = binascii.crc32(" world", crc) & 0xffffffff122print('crc32 = 0x%08x' % crc)123```124125> **Примечание**126>127> Чтобы получить одинаковое числовое значение во всех версиях Python и на всех платформах, используйте crc32(data) & 0xffffffff. Если контрольная сумма используется только в упакованном двоичном формате, это необязательно, так как возвращаемое значение уже является правильным 32-битным двоичным представлением независимо от знака.128129Изменено в версии 3.0: Возвращаемое значение беззнаковое и находится в диапазоне \[0, 2\*\*32-1\] независимо от платформы.130131#### `[binascii.b2a_hex]binascii.b2a_hex(data)`132133#### `binascii.hexlify(data)`134135Возвращает шестнадцатеричное представление двоичных136137*data*138139. Каждый байт140141*data*142143преобразуется в соответствующее двухзначное шестнадцатеричное представление. Результирующая строка, таким образом, вдвое длиннее144145*data*146147.148149#### `[binascii.a2b_hex]binascii.a2b_hex(hexstr)`150151#### `binascii.unhexlify(hexstr)`152153Возвращает двоичные данные, представленные шестнадцатеричной строкой154155*hexstr*156157. Эта функция является обратной к158159[`b2a_hex()`](https://python-all.ru/3.0/library/binascii.html#binascii.b2a_hex)160161.162163*hexstr*164165должна содержать чётное количество шестнадцатеричных цифр (могут быть как прописные, так и строчные), в противном случае возбуждается166167[`TypeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.TypeError)168169.170171#### `[binascii.Error]exception binascii.Error`172173Исключение, вызываемое при ошибках. Обычно это ошибки программирования.174175#### `[binascii.Incomplete]exception binascii.Incomplete`176177Исключение, вызываемое при неполных данных. Обычно это не ошибки программирования, но их можно обработать, прочитав ещё немного данных и повторив попытку.178179> **См. также**180>181> **Модуль [`base64`](https://python-all.ru/3.0/library/base64.html#module-base64)**182>183> Поддержка кодировки base64, используемой в сообщениях электронной почты MIME.184>185> **Модуль [`binhex`](https://python-all.ru/3.0/library/binhex.html#module-binhex)**186>187> Поддержка формата binhex, используемого на Macintosh.188>189> **Модуль [`uu`](https://python-all.ru/3.0/library/uu.html#module-uu)**190>191> Поддержка UU-кодирования, используемого в Unix.192>193> **Модуль [`quopri`](https://python-all.ru/3.0/library/quopri.html#module-quopri)**194>195> Поддержка quoted-printable кодирования, используемого в MIME-сообщениях электронной почты.196