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

binascii.md

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

1> **Источник:** https://python-all.ru/3.13/library/binascii.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `binascii` – Преобразование между двоичным представлением и ASCII89---1011Модуль `binascii` содержит несколько методов для преобразования между двоичным представлением и различными ASCII-кодированными двоичными представлениями. Обычно эти функции не используются напрямую – вместо них применяются модули-обёртки, такие как [`base64`](https://python-all.ru/3.13/library/base64.html#module-base64). Модуль `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.13/glossary.html#term-bytes-like-object) (such as [`bytes`](https://python-all.ru/3.13/library/stdtypes.html#bytes), [`bytearray`](https://python-all.ru/3.13/library/stdtypes.html#bytearray) and other objects that support the buffer protocol).16>17> Изменено в версии 3.3: теперь функции `a2b_*` принимают строки Unicode, содержащие только ASCII.1819Модуль `binascii` определяет следующие функции:2021#### `binascii.a2b_uu(string)`2223Преобразует одну строку данных в кодировке UUencode обратно в двоичный вид и возвращает двоичные данные. Строки обычно содержат 45 двоичных байт, за исключением последней. После данных строки могут следовать пробельные символы.2425#### `binascii.b2a_uu(data, *, backtick=False)`2627Преобразует двоичные данные в строку символов ASCII. Возвращаемое значение – преобразованная строка, включая символ новой строки. Длина *data* не должна превышать 45. Если *backtick* равен true, нули представляются символом `` '`' `` вместо пробелов.2829Изменено в версии 3.7: Добавлен параметр *backtick*.3031#### `binascii.a2b_base64(string, /, *, strict_mode=False)`3233Преобразует блок данных в кодировке base64 обратно в двоичный вид и возвращает двоичные данные. Можно передать одновременно несколько строк.3435Если *strict\_mode* равен true, будут преобразованы только корректные данные base64. Некорректные данные base64 вызовут исключение [`binascii.Error`](https://python-all.ru/3.13/library/binascii.html#binascii.Error).3637Корректный base64:3839- Соответствует спецификации [**RFC 3548**](https://python-all.ru/3.13/library/binascii.html).40- Содержит только символы алфавита base64.41- Не содержит лишних данных после заполнения (включая лишние символы заполнения, символы новой строки и т.д.).42- Не начинается с символа заполнения.4344Изменено в версии 3.11: Добавлен параметр *strict\_mode*.4546#### `binascii.b2a_base64(data, *, newline=True)`4748Преобразует двоичные данные в строку символов ASCII в кодировке base64. Возвращаемое значение – преобразованная строка, включая символ новой строки, если *newline* равен true. Результат этой функции соответствует стандарту [**RFC 3548**](https://python-all.ru/3.13/library/binascii.html).4950Изменено в версии 3.6: Добавлен параметр *newline*.5152#### `binascii.a2b_qp(data, header=False)`5354Преобразует блок данных в кодировке quoted-printable обратно в двоичный вид и возвращает двоичные данные. Можно передать одновременно несколько строк. Если необязательный аргумент *header* присутствует и равен true, символы подчёркивания будут декодированы как пробелы.5556#### `binascii.b2a_qp(data, quotetabs=False, istext=True, header=False)`5758Преобразует двоичные данные в одну или несколько строк символов ASCII в кодировке quoted-printable. Возвращаемое значение – преобразованная строка(и). Если необязательный аргумент *quotetabs* присутствует и равен true, все символы табуляции и пробелы будут закодированы. Если необязательный аргумент *istext* присутствует и равен true, символы новой строки не кодируются, но конечные пробелы будут закодированы. Если необязательный аргумент *header* присутствует и равен true, пробелы будут закодированы как символы подчёркивания в соответствии с [**RFC 1522**](https://python-all.ru/3.13/library/binascii.html). Если необязательный аргумент *header* присутствует и равен false, символы новой строки также будут закодированы; в противном случае преобразование перевода строки может повредить поток двоичных данных.5960#### `binascii.crc_hqx(data, value)`6162Вычисляет 16-битное значение CRC для *data*, начиная с *value* в качестве начального CRC, и возвращает результат. Используется полином CRC-CCITT *x*16 + *x*12 + *x*5 + 1, часто представляемый как 0x1021. Этот CRC используется в формате binhex4.6364#### `binascii.crc32(data[, value])`6566Вычисляет CRC-32 – 32-битную беззнаковую контрольную сумму *data*, начиная с начального CRC *value*. Начальное CRC по умолчанию равно нулю. Алгоритм совместим с контрольной суммой ZIP-файлов. Поскольку алгоритм разработан для использования в качестве контрольной суммы, он не подходит для использования в качестве универсальной хеш-функции. Используйте следующим образом:6768```python69print(binascii.crc32(b"hello world"))70# Или двумя частями:71crc = binascii.crc32(b"hello")72crc = binascii.crc32(b" world", crc)73print('crc32 = {:#010x}'.format(crc))74```7576Изменено в версии 3.0: Результат всегда беззнаковый.7778#### `binascii.b2a_hex(data[, sep[, bytes_per_sep=1]])`7980#### `binascii.hexlify(data[, sep[, bytes_per_sep=1]])`8182Возвращает шестнадцатеричное представление двоичных данных *data*. Каждый байт *data* преобразуется в соответствующее двузначное шестнадцатеричное представление. Поэтому возвращаемый объект bytes в два раза длиннее *data*.8384Аналогичная функциональность (но возвращающая текстовую строку) также удобно доступна с помощью метода [`bytes.hex()`](https://python-all.ru/3.13/library/stdtypes.html#bytes.hex).8586Если указан *sep*, он должен быть строкой из одного символа или объектом bytes. Он будет вставляться в вывод после каждых *bytes\_per\_sep* входных байтов. По умолчанию разделитель вставляется с правого конца вывода; если нужно считать слева, укажите отрицательное значение *bytes\_per\_sep*.8788```python89>>> import binascii90>>> binascii.b2a_hex(b'\xb9\x01\xef')91b'b901ef'92>>> binascii.hexlify(b'\xb9\x01\xef', '-')93b'b9-01-ef'94>>> binascii.b2a_hex(b'\xb9\x01\xef', b'_', 2)95b'b9_01ef'96>>> binascii.b2a_hex(b'\xb9\x01\xef', b' ', -2)97b'b901 ef'98```99100Изменено в версии 3.8: Добавлены параметры *sep* и *bytes\_per\_sep*.101102#### `binascii.a2b_hex(hexstr)`103104#### `binascii.unhexlify(hexstr)`105106Возвращает двоичные данные, представленные шестнадцатеричной строкой *hexstr*. Эта функция является обратной к [`b2a_hex()`](https://python-all.ru/3.13/library/binascii.html#binascii.b2a_hex). *hexstr* должна содержать чётное количество шестнадцатеричных цифр (может быть в верхнем или нижнем регистре), в противном случае вызывается исключение [`Error`](https://python-all.ru/3.13/library/binascii.html#binascii.Error).107108Аналогичная функциональность (принимает только строковые аргументы, но более лояльна к пробелам) также доступна с помощью [`bytes.fromhex()`](https://python-all.ru/3.13/library/stdtypes.html#bytes.fromhex) метода класса.109110#### `exception binascii.Error`111112Исключение, вызываемое при ошибках. Обычно это ошибки программирования.113114#### `exception binascii.Incomplete`115116Исключение, вызываемое при неполных данных. Обычно это не ошибки программирования, но их можно обработать, прочитав ещё немного данных и повторив попытку.117118> **См. также**119>120> **Модуль [`base64`](https://python-all.ru/3.13/library/base64.html#module-base64)**121>122> Поддержка кодирования в стиле base64, соответствующего RFC, для оснований 16, 32, 64 и 85.123>124> **Модуль [`quopri`](https://python-all.ru/3.13/library/quopri.html#module-quopri)**125>126> Поддержка quoted-printable кодирования, используемого в MIME-сообщениях электронной почты.127