Spec-Zone.ru › Python 3.7

binascii — Преобразование между двоичным и ASCII

Модуль binascii содержит ряд методов для преобразования между двоичными данными и различными ASCII-кодированными двоичными представлениями. Обычно вы не будете использовать эти функции напрямую, а воспользуетесь обёртками, такими как uu, base64 или binhex. Модуль binascii содержит низкоуровневые функции, написанные на C для большей скорости, которые используются более высокими уровнями модулей.

Примечание

Функции модуля a2b_* принимают строковые Unicode-объекты, содержащие только символы ASCII. Другие функции принимают только объекты-подобные байтам (такие как bytes, bytearray и другие объекты, поддерживающие протокол буфера).

Изменено в версии 3.3: Функции a2b_* теперь принимают строковые Unicode-объекты, содержащие только символы ASCII.

Модуль binascii определяет следующие функции:

binascii.a2b_uu(string)

Преобразует одну строку данных uuencode обратно в двоичный формат и возвращает двоичные данные. Строки обычно содержат 45 (двоичных) байтов, за исключением последней строки. Данные строки могут быть последовали пробелами.

binascii.b2a_uu(data, *, backtick=False)

Преобразует двоичные данные в строку ASCII-символов. Возвращаемая строка включает преобразованную строку и символ новой строки. Длина data должна быть не более 45. Если backtick равно True, нули представляются как '`' вместо пробелов.

Изменено в версии 3.7: Добавлен параметр backtick.

binascii.a2b_base64(string)

Преобразует блок данных base64 обратно в двоичный формат и возвращает двоичные данные. Одновременно может быть передано более одной строки.

binascii.b2a_base64(data, *, newline=True)

Преобразует двоичные данные в строку ASCII-символов в кодировке base64. Возвращаемая строка включает преобразованную строку и символ новой строки, если newline равно True. Вывод этой функции соответствует RFC 3548.

Изменено в версии 3.6: Добавлен параметр newline.

binascii.a2b_qp(data, header=False)

Преобразует блок данных quoted-printable обратно в двоичный формат и возвращает двоичные данные. Одновременно может быть передано более одной строки. Если необязательный аргумент header присутствует и равен True, символы подчеркивания будут декодированы как пробелы.

binascii.b2a_qp(data, quotetabs=False, istext=True, header=False)

Преобразует двоичные данные в строку(и) ASCII-символов в кодировке quoted-printable. Возвращаемая строка(и) — преобразованные данные. Если необязательный аргумент quotetabs присутствует и равен True, все табуляции и пробелы будут закодированы. Если необязательный аргумент istext присутствует и равен True, новые строки не кодируются, но будут закодированы trailing whitespace. Если необязательный аргумент header присутствует и равен True, пробелы будут закодированы как символы подчеркивания в соответствии с RFC 1522. Если необязательный аргумент header присутствует и равен False, символы новой строки также будут закодированы; в противном случае преобразование символов новой строки может повредить двоичный поток данных.

binascii.a2b_hqx(string)

Преобразует ASCII-данные в формате binhex4 в двоичные данные, без выполнения сжатия RLE. Строка должна содержать целое число двоичных байтов или (в случае последней части данных binhex4) содержать оставшиеся биты равными нулю.

binascii.rledecode_hqx(data)

Выполнить RLE-распаковку данных в соответствии со стандартом binhex4. Алгоритм использует 0x90 после байта в качестве индикатора повтора, за которым следует счётчик. Счётчик 0 указывает значение байта 0x90. Процедура возвращает распакованные данные, если входные данные не заканчиваются на сиротеющем индикаторе повтора, в этом случае возбуждается исключение Incomplete.

Изменено в версии 3.2: Принимает только объекты bytestring или bytearray в качестве входных данных.

binascii.rlecode_hqx(data)

Выполнить RLE-сжатие в стиле binhex4 для data и вернуть результат.

binascii.b2a_hqx(data)

Выполнить перевод шестнадцатеричной binhex4 из двоичного в ASCII и вернуть полученную строку. Аргумент должен быть уже закодирован в RLE и иметь длину, кратную 3 (кроме, возможно, последнего фрагмента).

binascii.crc_hqx(data, value)

Вычислить значение CRC-16 для data, начиная со значения value в качестве начального CRC, и вернуть результат. Используется полином CRC-CCITT x16 + x12 + x5 + 1, часто представляемый как 0x1021. Этот CRC используется в формате binhex4.

binascii.crc32(data[, value])

Вычислить CRC-32, 32-разрядную контрольную сумму data, начиная с начального CRC value. По умолчанию начальный CRC равен нулю. Алгоритм согласован с контрольной суммой файлов ZIP. Поскольку алгоритм разработан для использования в качестве алгоритма контрольной суммы, он не подходит для использования в качестве общего алгоритма хеширования. Используйте следующим образом:

print(binascii.crc32(b"hello world"))
# Or, in two pieces:
crc = binascii.crc32(b"hello")
crc = binascii.crc32(b" world", crc)
print('crc32 = {:#010x}'.format(crc))

Изменено в версии 3.0: Результат всегда беззнаковый. Для генерации одного и того же числового значения во всех версиях Python и на всех платформах используйте crc32(data) & 0xffffffff.

binascii.b2a_hex(data)
binascii.hexlify(data)

Возвращает шестнадцатеричное представление двоичных данных data. Каждый байт data преобразуется в соответствующее 2-значное шестнадцатеричное представление. Возвращаемый объект bytes поэтому вдвое длиннее, чем длина data.

Аналогичная функциональность (но возвращающая строку текста) удобно доступна с помощью метода bytes.hex().

binascii.a2b_hex(hexstr)
binascii.unhexlify(hexstr)

Возвращает двоичные данные, представленные шестнадцатеричной строкой hexstr. Эта функция является обратной для b2a_hex(). hexstr должна содержать чётное количество шестнадцатеричных цифр (которые могут быть в верхнем или нижнем регистре), в противном случае возбуждается исключение Error.

Аналогичная функциональность (принимающая только аргументы строк текста, но более либеральная по отношению к пробелам) также доступна с помощью метода класса bytes.fromhex().

exception binascii.Error

Исключение, возбуждаемое при ошибках. Обычно это ошибки программирования.

exception binascii.Incomplete

Исключение, возбуждаемое при неполных данных. Обычно это не ошибки программирования, но может быть обработано путём считывания немного больше данных и новой попытки.

См. также

Module base64

Поддержка кодирования в стиле base64, соответствующего RFC, в базах 16, 32, 64 и 85.

Module binhex

Поддержка формата binhex, используемого на Macintosh.

Module uu

Поддержка кодирования UU, используемого в Unix.

Module quopri

Поддержка кодирования quoted-printable, используемого в сообщениях MIME электронной почты.

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/binascii.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API