Spec-Zone.ru › Python 3.6

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

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

Примечание

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

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

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

binascii.a2b_uu(string)

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

binascii.b2a_uu(data)

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

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, новые строки не будут закодированы, но хвостовые пробелы будут закодированы. Если присутствует необязательный аргумент 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: Принимаются только байтовые строки или массивы байтов в качестве входных данных.

binascii.rlecode_hqx(data)

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

binascii.b2a_hqx(data)

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

binascii.crc_hqx(data, value)

Вычисляет 16-битное значение CRC для 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.

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

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

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.6/library/binascii.html

Spec-Zone.ru

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