18.14. binascii – Преобразование между двоичными данными и ASCII¶binascii – Convert between binary and ASCII
Модуль binascii содержит ряд методов для преобразования между двоичным представлением и различными ASCII-кодированными двоичными представлениями. Обычно эти функции не используются напрямую – вместо этого применяются модули-обёртки, такие как uu, base64 или binhex. Модуль binascii содержит низкоуровневые функции, написанные на C для повышения скорости, которые используются модулями более высокого уровня.
Модуль 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. Возвращаемое значение – преобразованная строка, включая символ новой строки. Символ новой строки добавляется, потому что исходным вариантом использования этой функции была подача на вход серии строк по 57 байт для получения выходных строк, соответствующих стандарту MIME-base64. В остальном вывод соответствует RFC 3548.
-
binascii.a2b_qp(string[, header])¶ Преобразует блок данных в кодировке quoted-printable обратно в двоичный вид и возвращает двоичные данные. Можно передать одновременно несколько строк. Если необязательный аргумент header присутствует и равен true, символы подчёркивания будут декодированы как пробелы.
-
binascii.b2a_qp(data[, quotetabs, istext, header])¶ Преобразует двоичные данные в строку (строки) символов 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.
-
binascii.rlecode_hqx(data)¶ Выполняет RLE-сжатие данных data в стиле binhex4 и возвращает результат.
-
binascii.b2a_hqx(data)¶ Выполняет перевод двоичного кода в ASCII в формате hexbin4 и возвращает результирующую строку. Аргумент уже должен быть RLE-кодированным и иметь длину, кратную 3 (за исключением, возможно, последнего фрагмента).
-
binascii.crc_hqx(data, crc)¶ Вычисляет 16-битное значение CRC для data, начиная с начального crc и возвращает результат. Используется полином CRC-CCITT x16 + x12 + x5 + 1, часто представляемый как 0x1021. Этот CRC используется в формате binhex4.
-
binascii.crc32(data[, crc])¶ Вычисляет CRC-32 – 32-битную контрольную сумму данных, начиная с начального crc. Это согласуется с контрольной суммой ZIP-файлов. Поскольку алгоритм предназначен для использования в качестве контрольной суммы, он не подходит в качестве универсальной хеш-функции. Используется следующим образом:
print binascii.crc32("hello world") # Или двумя частями: crc = binascii.crc32("hello") crc = binascii.crc32(" world", crc) & 0xffffffff print 'crc32 = 0x%08x' % crc
Примечание
Чтобы получить одинаковое числовое значение во всех версиях Python и на всех платформах, используйте crc32(data) & 0xffffffff. Если контрольная сумма используется только в упакованном двоичном формате, это необязательно, так как возвращаемое значение уже является правильным 32-битным двоичным представлением независимо от знака.
Изменено в версии 2.6: Возвращаемое значение находится в диапазоне [-2**31, 2**31-1] независимо от платформы. В прошлом значение могло быть знаковым на одних платформах и беззнаковым на других. Используйте & 0xffffffff, если требуется соответствие поведению Python 3.
Изменено в версии 3.0: Возвращаемое значение беззнаковое и находится в диапазоне [0, 2**32-1] независимо от платформы.
-
binascii.b2a_hex(data)¶ -
binascii.hexlify(data)¶ Возвращает шестнадцатеричное представление двоичных data. Каждый байт data преобразуется в соответствующее двухзначное шестнадцатеричное представление. Результирующая строка, таким образом, вдвое длиннее data.
-
binascii.a2b_hex(hexstr)¶ -
binascii.unhexlify(hexstr)¶ Возвращает двоичные данные, представленные шестнадцатеричной строкой hexstr. Эта функция обратна
b2a_hex(). hexstr должна содержать чётное количество шестнадцатеричных цифр (допускается верхний и нижний регистр), в противном случае возбуждаетсяTypeError.
-
exception
binascii.Error¶ Исключение, вызываемое при ошибках. Обычно это ошибки программирования.
-
exception
binascii.Incomplete¶ Исключение, вызываемое при неполных данных. Обычно это не ошибки программирования, но их можно обработать, прочитав ещё немного данных и повторив попытку.
См. также
- Модуль
base64 Поддержка совместимого с RFC кодирования base64 в системах счисления 16, 32 и 64.
- Модуль
binhex Поддержка формата binhex, используемого на Macintosh.
- Модуль
uu Поддержка UU-кодирования, используемого в Unix.
- Модуль
quopri Поддержка quoted-printable кодирования, используемого в MIME-сообщениях электронной почты.