binascii – Преобразование между двоичным представлением и ASCII¶binascii – Convert between binary and ASCII
Модуль binascii содержит ряд методов для преобразования между двоичным представлением и различными ASCII-кодированными двоичными представлениями. Обычно эти функции не используются напрямую – вместо этого применяются модули-обёртки, такие как uu, base64 или binhex. Модуль binascii содержит низкоуровневые функции, написанные на C для повышения скорости, которые используются модулями более высокого уровня.
Примечание
a2b_* functions accept Unicode strings containing only ASCII characters.
Other functions only accept bytes-like objects (such as
bytes, bytearray and other objects that support the buffer
protocol).
Изменено в версии 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, символы новой строки не кодируются, но конечные пробелы будут закодированы. Если необязательный аргумент 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-сжатие данных data в стиле binhex4 и возвращает результат.
-
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")) # Или двумя частями: crc = binascii.crc32(b"hello") crc = binascii.crc32(b" world", crc) print('crc32 = {:#010x}'.format(crc))
Изменено в версии 3.0: Результат всегда беззнаковый (unsigned). Чтобы получить одинаковое числовое значение во всех версиях Python и на всех платформах, используйте
crc32(data) & 0xffffffff.
-
binascii.b2a_hex(data[, sep[, bytes_per_sep=1]])¶ -
binascii.hexlify(data[, sep[, bytes_per_sep=1]])¶ Возвращает шестнадцатеричное представление двоичных данных data. Каждый байт data преобразуется в соответствующее двузначное шестнадцатеричное представление. Поэтому возвращаемый объект bytes в два раза длиннее data.
Аналогичная функциональность (но возвращающая текстовую строку) также удобно доступна с помощью метода
bytes.hex().Если указан sep, он должен быть строкой из одного символа или объектом bytes. Он будет вставляться в вывод после каждых 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¶ Исключение, вызываемое при неполных данных. Обычно это не ошибки программирования, но их можно обработать, прочитав ещё немного данных и повторив попытку.
См. также
- Модуль
base64 Поддержка кодирования в стиле base64, соответствующего RFC, для оснований 16, 32, 64 и 85.
- Модуль
binhex Поддержка формата binhex, используемого на Macintosh.
- Модуль
uu Поддержка UU-кодирования, используемого в Unix.
- Модуль
quopri Поддержка quoted-printable кодирования, используемого в MIME-сообщениях электронной почты.