Документация Python неофициальный перевод

binascii.md

120 строк · 12.0 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.6/library/binascii.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 19.8. [`binascii`](https://python-all.ru/3.6/library/binascii.html#module-binascii) – Преобразование между двоичными данными и ASCII89---1011Модуль [`binascii`](https://python-all.ru/3.6/library/binascii.html#module-binascii) содержит ряд методов для преобразования между двоичным представлением и различными ASCII-кодированными двоичными представлениями. Обычно эти функции не используются напрямую – вместо этого применяются модули-обёртки, такие как [`uu`](https://python-all.ru/3.6/library/uu.html#module-uu), [`base64`](https://python-all.ru/3.6/library/base64.html#module-base64) или [`binhex`](https://python-all.ru/3.6/library/binhex.html#module-binhex). Модуль [`binascii`](https://python-all.ru/3.6/library/binascii.html#module-binascii) содержит низкоуровневые функции, написанные на C для повышения скорости, которые используются модулями более высокого уровня.1213> **Примечание**14>15> `a2b_*` functions accept Unicode strings containing only ASCII characters. Other functions only accept [bytes-like objects](https://python-all.ru/3.6/glossary.html#term-bytes-like-object) (such as [`bytes`](https://python-all.ru/3.6/library/stdtypes.html#bytes), [`bytearray`](https://python-all.ru/3.6/library/stdtypes.html#bytearray) and other objects that support the buffer protocol).16>17> Изменено в версии 3.3: теперь функции `a2b_*` принимают строки Unicode, содержащие только ASCII.1819Модуль [`binascii`](https://python-all.ru/3.6/library/binascii.html#module-binascii) определяет следующие функции:2021#### `binascii.a2b_uu(string)`2223Преобразует одну строку данных в кодировке UUencode обратно в двоичный вид и возвращает двоичные данные. Строки обычно содержат 45 двоичных байт, за исключением последней. После данных строки могут следовать пробельные символы.2425#### `binascii.b2a_uu(data)`2627Преобразует двоичные данные в строку ASCII-символов; возвращаемое значение – это преобразованная строка, включающая символ новой строки. Длина *data* должна быть не более 45.2829#### `binascii.a2b_base64(string)`3031Преобразует блок данных в кодировке base64 обратно в двоичный вид и возвращает двоичные данные. Можно передать одновременно несколько строк.3233#### `binascii.b2a_base64(data, *, newline=True)`3435Преобразует двоичные данные в строку символов ASCII в кодировке base64. Возвращаемое значение – преобразованная строка, включая символ новой строки, если *newline* равен true. Результат этой функции соответствует стандарту [**RFC 3548**](https://python-all.ru/3.6/library/binascii.html).3637Изменено в версии 3.6: Добавлен параметр *newline*.3839#### `binascii.a2b_qp(data, header=False)`4041Преобразует блок данных в кодировке quoted-printable обратно в двоичный вид и возвращает двоичные данные. Можно передать одновременно несколько строк. Если необязательный аргумент *header* присутствует и равен true, символы подчёркивания будут декодированы как пробелы.4243#### `binascii.b2a_qp(data, quotetabs=False, istext=True, header=False)`4445Преобразует двоичные данные в одну или несколько строк символов ASCII в кодировке quoted-printable. Возвращаемое значение – преобразованная строка(и). Если необязательный аргумент *quotetabs* присутствует и равен true, все символы табуляции и пробелы будут закодированы. Если необязательный аргумент *istext* присутствует и равен true, символы новой строки не кодируются, но конечные пробелы будут закодированы. Если необязательный аргумент *header* присутствует и равен true, пробелы будут закодированы как символы подчёркивания в соответствии с [**RFC 1522**](https://python-all.ru/3.6/library/binascii.html). Если необязательный аргумент *header* присутствует и равен false, символы новой строки также будут закодированы; в противном случае преобразование перевода строки может повредить поток двоичных данных.4647#### `binascii.a2b_hqx(string)`4849Преобразует ASCII-данные в формате binhex4 в двоичный код без выполнения RLE-декомпрессии. Строка должна содержать полное количество двоичных байт, или (в случае последней части данных binhex4) оставшиеся биты должны быть нулевыми.5051#### `binascii.rledecode_hqx(data)`5253Выполняет RLE-декомпрессию данных в соответствии со стандартом binhex4. Алгоритм использует `0x90` после байта в качестве индикатора повтора, за которым следует счётчик. Счётчик `0` означает, что значение байта равно `0x90`. Функция возвращает декомпрессированные данные, если только входные данные не заканчиваются одиночным индикатором повтора – в этом случае возбуждается исключение [`Incomplete`](https://python-all.ru/3.6/library/binascii.html#binascii.Incomplete).5455Изменено в версии 3.2: В качестве входа принимаются только объекты bytestring или bytearray.5657#### `binascii.rlecode_hqx(data)`5859Выполняет RLE-сжатие данных *data* в стиле binhex4 и возвращает результат.6061#### `binascii.b2a_hqx(data)`6263Выполняет перевод двоичного кода в ASCII в формате hexbin4 и возвращает результирующую строку. Аргумент уже должен быть RLE-кодированным и иметь длину, кратную 3 (за исключением, возможно, последнего фрагмента).6465#### `binascii.crc_hqx(data, value)`6667Вычисляет 16-битное значение CRC для *data*, начиная с *value* в качестве начального CRC, и возвращает результат. Используется полином CRC-CCITT *x*16 + *x*12 + *x*5 + 1, часто представляемый как 0x1021. Этот CRC используется в формате binhex4.6869#### `binascii.crc32(data[, value])`7071Вычисляет CRC-32, 32-битную контрольную сумму данных *data*, начиная с начального CRC *value*. Начальное CRC по умолчанию равно нулю. Алгоритм совместим с контрольной суммой ZIP-файлов. Поскольку алгоритм предназначен для использования в качестве контрольной суммы, он не подходит для применения в качестве общего алгоритма хеширования. Используйте следующим образом:7273```python74print(binascii.crc32(b"hello world"))75# Или двумя частями:76crc = binascii.crc32(b"hello")77crc = binascii.crc32(b" world", crc)78print('crc32 = {:#010x}'.format(crc))79```8081Изменено в версии 3.0: Результат всегда беззнаковый (unsigned). Чтобы получить одинаковое числовое значение во всех версиях Python и на всех платформах, используйте `crc32(data) & 0xffffffff`.8283#### `binascii.b2a_hex(data)`8485#### `binascii.hexlify(data)`8687Возвращает шестнадцатеричное представление двоичных данных *data*. Каждый байт *data* преобразуется в соответствующее двузначное шестнадцатеричное представление. Поэтому возвращаемый объект bytes в два раза длиннее *data*.8889#### `binascii.a2b_hex(hexstr)`9091#### `binascii.unhexlify(hexstr)`9293Возвращает двоичные данные, представленные шестнадцатеричной строкой *hexstr*. Эта функция является обратной к [`b2a_hex()`](https://python-all.ru/3.6/library/binascii.html#binascii.b2a_hex). *hexstr* должна содержать чётное количество шестнадцатеричных цифр (может быть в верхнем или нижнем регистре), в противном случае вызывается исключение [`Error`](https://python-all.ru/3.6/library/binascii.html#binascii.Error).9495#### `exception binascii.Error`9697Исключение, вызываемое при ошибках. Обычно это ошибки программирования.9899#### `exception binascii.Incomplete`100101Исключение, вызываемое при неполных данных. Обычно это не ошибки программирования, но их можно обработать, прочитав ещё немного данных и повторив попытку.102103> **См. также**104>105> **Модуль [`base64`](https://python-all.ru/3.6/library/base64.html#module-base64)**106>107> Поддержка кодирования в стиле base64, соответствующего RFC, для оснований 16, 32, 64 и 85.108>109> **Модуль [`binhex`](https://python-all.ru/3.6/library/binhex.html#module-binhex)**110>111> Поддержка формата binhex, используемого на Macintosh.112>113> **Модуль [`uu`](https://python-all.ru/3.6/library/uu.html#module-uu)**114>115> Поддержка UU-кодирования, используемого в Unix.116>117> **Модуль [`quopri`](https://python-all.ru/3.6/library/quopri.html#module-quopri)**118>119> Поддержка quoted-printable кодирования, используемого в MIME-сообщениях электронной почты.120