binascii
— Преобразование между двоичным кодом и ASCII¶
Модуль binascii
содержит ряд методов для преобразования между двоичным и различными ASCII-кодированными двоичными представлениями. Обычно вы не будете использовать эти функции напрямую, а воспользуетесь модулями-обертками, такими как uu
, base64
или binhex
. Модуль binascii
содержит низкоуровневые функции, написанные на языке C для большей скорости, которые используются модулями более высокого уровня.
Примечание
Функции a2b_*
принимают строки Unicode, содержащие только символы ASCII. Другие функции принимают только bytes-like objects (такие как bytes
, bytearray
и другие объекты, поддерживающие протокол буфера).
Изменено в версии 3.3: Строки юникода только ASCII теперь принимаются функциями a2b_*
.
Модуль binascii
определяет следующие функции:
-
binascii.
a2b_uu
(string)¶ Преобразование одной строки данных в кодировке uuencoded обратно в двоичный формат и возврат двоичных данных. Строки обычно содержат 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)¶ Преобразует блок данных, заключенных в кавычки, в двоичный формат и возвращает двоичные данные. Одновременно может быть передано более одной строки. Если дополнительный аргумент header присутствует и равен true, подчеркивания будут декодированы как пробелы.
-
binascii.
b2a_qp
(data, quotetabs=False, istext=True, header=False)¶ Преобразование двоичных данных в строку(и) символов ASCII в кодировке, пригодной для печати в кавычках. Возвращаемое значение - преобразованная строка(и). Если дополнительный аргумент quotetabs присутствует и равен true, все табуляции и пробелы будут закодированы. Если необязательный аргумент istext присутствует и равен true, новые строки не кодируются, но пробельные символы в конце строки будут закодированы. Если необязательный аргумент 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: Принимает на вход только объекты типа bytestring или bytearray.
Не рекомендуется, начиная с версии 3.9.
-
binascii.
rlecode_hqx
(data)¶ Выполните RLE-сжатие в стиле binhex4 над data и верните результат.
Не рекомендуется, начиная с версии 3.9.
-
binascii.
b2a_hqx
(data)¶ Выполнить преобразование двоичного кода hexbin4 в формат ASCII и вернуть полученную строку. Аргумент должен быть уже закодирован в RLE и иметь длину, кратную 3 (за исключением, возможно, последнего фрагмента).
Не рекомендуется, начиная с версии 3.9.
-
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-битную контрольную сумму данных, начиная с начального CRC значения. По умолчанию начальная 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. Каждый байт data преобразуется в соответствующее двузначное шестнадцатеричное представление. Поэтому возвращаемый объект bytes в два раза длиннее, чем длина data.
Аналогичная функциональность (но возвращающая текстовую строку) также удобно доступна с помощью метода
bytes.hex()
.Если указано sep, то это должен быть односимвольный объект str или 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
Поддержка RFC-совместимого кодирования в стиле base64 в base 16, 32, 64 и 85.
- Модуль
binhex
Поддержка формата binhex, используемого на Macintosh.
- Модуль
uu
Поддержка кодировки UU, используемой в Unix.
- Модуль
quopri
Поддержка кодировки quoted-printable, используемой в сообщениях электронной почты MIME.