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 -
Исключение, генерируемое при неполных данных. Обычно это не ошибки программирования, но их можно обработать, прочитав немного больше данных и повторив попытку.
См. также
-
Modulebase64 -
Поддержка кодирования в стиле Base64, соответствующего RFC, в базах 16, 32, 64 и 85.
-
Modulebinhex -
Поддержка формата binhex, используемого на Macintosh.
-
Moduleuu -
Поддержка кодирования UU, используемого в Unix.
-
Modulequopri -
Поддержка кодировки quoted-printable, используемой в сообщениях электронной почты MIME.
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/library/binascii.html