Spec-Zone.ru › Python 3.9

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-символов. Возвращаемое значение — преобразованная строка, включая символ новой строки. Длина данных должна быть не более 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 пробелы. Если необязательный параметр header равен true, пробелы будут закодированы как подчеркивания в соответствии с RFC 1522. Если необязательный параметр header равен false, символы новой строки также будут закодированы; в противном случае преобразование символов новой строки может повредить двоичный поток данных.

binascii.a2b_hqx(string)

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

Устарело начиная с версии 3.9.

binascii.rledecode_hqx(data)

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

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

Устарело начиная с версии 3.9.

binascii.rlecode_hqx(data)

Выполняет RLE-компрессию данных в стиле binhex4 и возвращает результат.

Устарело начиная с версии 3.9.

binascii.b2a_hqx(data)

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

Устарело начиная с версии 3.9.

binascii.crc_hqx(data, value)

Вычисляет значение CRC-16 данных data, начиная со значения CRC value, и возвращает результат. Используется полином 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 2 или ранее, используйте crc32(data) & 0xffffffff.

binascii.b2a_hex(data[, sep[, bytes_per_sep=1]])
binascii.hexlify(data[, sep[, bytes_per_sep=1]])

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

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

Если указан sep, он должен быть строкой или объектом байтов из одного символа. Он будет вставлен в выходные данные после каждых bytes_per_sep байтов входных данных. По умолчанию расположение разделителя рассчитывается с правого конца выходных данных. Если вы хотите подсчитать слева, укажите отрицательное значение bytes_per_sep.

>>> import binascii
>>> binascii.b2a_hex(b'\xb9\x01\xef')
b'b901ef'
>>> binascii.hexlify(b'\xb9\x01\xef', '-')
b'b9-01-ef'
>>> binascii.b2a_hex(b'\xb9\x01\xef', b'_', 2)
b'b9_01ef'
>>> binascii.b2a_hex(b'\xb9\x01\xef', b' ', -2)
b'b901 ef'

Изменено в версии 3.8: Добавлены параметры sep и bytes_per_sep.

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.

END_OF_DOCUMENT_MARKER

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

Spec-Zone.ru

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