binascii
— преобразования между двоичной и ASCII¶
Модуль binascii
содержит ряд методов для конвертирования бинарных данных и двоичных
представлений символов ASCII. Как правило, вы не будете использовать эти методы напрямую,
но они используются в модулях обёртках, такие как uu
, base64
или binhex
.
Модуль binascii
содержит низкоуровневые функции, написанныйе на C для большей
скорости и используются более высокоуровневыми модулями.
Примечание
Функции a2b_*
принимают Юникод строки, содержащих только символы ASCII.
Другие функции принимают только байтоподобные объекты (например,
bytes
, bytearray
и другие объекты, которые поддерживают буферизацию протокола).
Изменено в версии 3.3: Функции a2b_*
принимают только ASCII юникод строки.
Модуль binascii
определяет следующие функции:
-
binascii.
a2b_uu
(string)¶ Преобразовывает одну строку uu-закодированых данных обратно в двоичные, возвращая двоичные данные. Строки, как правило, содержат 45 (двоичных) байт, за исключением последней строки. Данные строки могут быть пробелами.
-
binascii.
b2a_uu
(data, *, backtick=False)¶ Преобразование двоичных данных в строку символов ASCII, возвращаемое значение является преобразованной строкой, включая символ новой строки типа char. Длина 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)¶ Конвертировать binhex4 данные в формате ASCII в двоичные, без RLE-декомпрессии. В строке должны содержаться достаточное число двоичных байт, или (в случае последней порции данных binhex4) содержат оставшиеся биты нулевыми.
-
binascii.
rledecode_hqx
(data)¶ Выполнять RLE-декомпрессии данных, согласно стандарту binhex4. Алгоритм использует
0x90
после байта в качестве индикатора повторения с последующим подсётом. Счётчик0
указывает значение байта0x90
. Процедура возвращает распакованные данные, если только входные данные не заканчиваются осиротевшим индикатором повтора, в этом случае возникает исключениеIncomplete
.Изменено в версии 3.2: Принимаются только bytestring или объекты bytearray в качестве входных данных.
-
binascii.
rlecode_hqx
(data)¶ Проанализировать стиль binhex4 метода RLE-сжатия на data и возвратить результат.
-
binascii.
b2a_hqx
(data)¶ Выполнение hexbin4 двоичного-в-ASCII перевода и возвращая в результате строку. Аргумент должен быть 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: Результат всегда беззнаковый. Чтобы производить такое же числовое значение во всех Python версиях и платформах, используйте
crc32(data) & 0xffffffff
.
-
binascii.
b2a_hex
(data[, sep[, bytes_per_sep=1]])¶ -
binascii.
hexlify
(data[, sep[, bytes_per_sep=1]])¶ Возвращает шестнадцатеричное представление двоичных data. Каждый байт data превращаются в соответствующие 2-значное hex представление. Объект возвращает байты, поэтому в два раза длиннее длины 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
¶ Поднятие исключения на неполные данные. Они, как правило, не ошибки программирования, но может быть обработаны, прочитав немного больше данных и повторив попытку.
См.также
- Модуль
base64
- Поддержка соответствии с RFC в base64-стиль кодирования с основанием 16, 32, 64 и 85.
- Модуль
binhex
- Поддержка формата binhex используемый Macintosh.
- Модуль
uu
- Поддержки UU кодирование используемый Unix.
- Модуль
quopri
- Поддержка кодировки quoted-printable, используемой в сообщениях электронной почты MIME.