19.8. binascii – преобразование между двоичным и ASCII-форматами¶binascii – Convert between binary and ASCII
Модуль binascii содержит ряд методов для преобразования между двоичными данными и различными ASCII-кодированными двоичными представлениями. Обычно эти функции не используются напрямую – вместо этого применяются модули-обёртки, такие как uu, base64 или binhex. Модуль binascii содержит низкоуровневые функции на C для большей производительности, которые используются высокоуровневыми модулями.
Примечание
Функции a2b_* принимают строки Unicode, содержащие только символы ASCII. Остальные функции принимают только bytes-like objects (например, bytes, bytearray и другие объекты, поддерживающие буферный протокол).
Изменено в версии 3.3: Строки Unicode, содержащие только ASCII, теперь принимаются функциями a2b_*.
Модуль binascii определяет следующие функции:
- binascii.a2b_uu(string)¶
Преобразует одну строку данных в кодировке UUencode обратно в двоичный вид и возвращает двоичные данные. Строки обычно содержат 45 двоичных байт, за исключением последней. После данных строки могут следовать пробельные символы.
- binascii.b2a_uu(data)¶
Преобразует двоичные данные в строку ASCII-символов; возвращаемое значение – это преобразованная строка, включающая символ новой строки. Длина data должна быть не более 45.
- binascii.a2b_base64(string)¶
Преобразует блок данных в кодировке base64 обратно в двоичный вид и возвращает двоичные данные. Можно передать одновременно несколько строк.
- binascii.b2a_base64(data)¶
Преобразует двоичные данные в строку ASCII-символов в кодировке base64. Возвращаемое значение – преобразованная строка, включающая символ новой строки. Длина data должна быть не более 57 для соответствия стандарту base64.
- binascii.a2b_qp(string, header=False)¶
Преобразует блок данных в кодировке quoted-printable обратно в двоичный вид и возвращает двоичные данные. Можно передать одновременно несколько строк. Если необязательный аргумент header присутствует и равен true, символы подчёркивания будут декодированы как пробелы.
Изменено в версии 3.2: В качестве входа принимаются только объекты bytestring или bytearray.
- binascii.b2a_qp(data, quotetabs=False, istext=True, header=False)¶
Преобразует двоичные данные в строку (строки) символов ASCII в кодировке quoted-printable encoding. Возвращаемое значение – преобразованная строка (строки). Если необязательный аргумент quotetabs присутствует и равен true, все табуляции и пробелы будут закодированы. Если необязательный аргумент istext присутствует и равен true, символы новой строки не кодируются, но завершающие пробельные символы будут закодированы. Если необязательный аргумент header присутствует и равен true, пробелы будут закодированы как символы подчеркивания в соответствии с RFC1522. Если необязательный аргумент 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, crc)¶
Вычисляет значение CRC binhex4 для data, начиная с начального crc, и возвращает результат.
- binascii.crc32(data[, crc])¶
Вычисляет CRC-32 – 32-битную контрольную сумму данных, начиная с начального crc. Это согласуется с контрольной суммой ZIP-файлов. Поскольку алгоритм предназначен для использования в качестве контрольной суммы, он не подходит в качестве универсальной хеш-функции. Используется следующим образом:
print(binascii.crc32(b"hello world")) # Или двумя частями: crc = binascii.crc32(b"hello") crc = binascii.crc32(b" world", crc) & 0xffffffff print('crc32 = {:#010x}'.format(crc))
Примечание
Чтобы получить одинаковое числовое значение во всех версиях Python и на всех платформах, используйте crc32(data) & 0xffffffff. Если контрольная сумма используется только в упакованном двоичном формате, это необязательно, так как возвращаемое значение уже является правильным 32-битным двоичным представлением независимо от знака.
- binascii.b2a_hex(data)¶
- binascii.hexlify(data)¶
Возвращает шестнадцатеричное представление двоичных данных data. Каждый байт data преобразуется в соответствующее двузначное шестнадцатеричное представление. Поэтому возвращаемый объект bytes в два раза длиннее data.
- binascii.a2b_hex(hexstr)¶
- binascii.unhexlify(hexstr)¶
Возвращает двоичные данные, представленные шестнадцатеричной строкой hexstr. Эта функция является обратной к b2a_hex(). hexstr должна содержать чётное количество шестнадцатеричных цифр (могут быть как прописные, так и строчные), в противном случае возбуждается TypeError.
Изменено в версии 3.2: В качестве входа принимаются только объекты bytestring или bytearray.
- exception binascii.Error¶
Исключение, вызываемое при ошибках. Обычно это ошибки программирования.
- exception binascii.Incomplete¶
Исключение, вызываемое при неполных данных. Обычно это не ошибки программирования, но их можно обработать, прочитав ещё немного данных и повторив попытку.
См. также
- Модуль base64
- Поддержка кодировки base64, используемой в сообщениях электронной почты MIME.
- Модуль binhex
- Поддержка формата binhex, используемого на Macintosh.
- Модуль uu
- Поддержка UU-кодирования, используемого в Unix.
- Модуль quopri
- Поддержка quoted-printable кодирования, используемого в MIME-сообщениях электронной почты.