binascii — Convert between binary and ASCII


The binascii module contains a number of methods to convert between binary and various ASCII-encoded binary representations. Normally, you will not use these functions directly but use wrapper modules like uu, base64, or binhex instead. The binascii module contains low-level functions written in C for greater speed that are used by the higher-level modules.

Примітка

Функції a2b_* приймають рядки Unicode, що містять лише символи ASCII. Інші функції приймають лише байтоподібні об’єкти (такі як bytes, bytearray та інші об’єкти, які підтримують протокол буфера).

Змінено в версії 3.3: Функції a2b_* тепер приймають рядки Unicode тільки ASCII.

Модуль 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. Поверненим значенням є перетворений рядок, включаючи символ нового рядка, якщо новий рядок має значення true. Вихід цієї функції відповідає RFC 3548.

Змінено в версії 3.6: Додано параметр новий рядок.

binascii.a2b_qp(data, header=False)

Перетворити блок даних, які можна роздрукувати в лапках, назад у двійкові та повернути двійкові дані. Одночасно можна передати більше одного рядка. Якщо необов’язковий аргумент header присутній і має значення true, підкреслення розшифровуватимуться як пробіли.

binascii.b2a_qp(data, quotetabs=False, istext=True, header=False)

Перетворюйте двійкові дані на рядки символів ASCII у кодуванні, що друкується в лапках. Поверненим значенням є перетворені рядки. Якщо необов’язковий аргумент quotetabs присутній і вірний, усі символи табуляції та пробіли будуть закодовані. Якщо необов’язковий аргумент istext присутній і має значення true, нові рядки не кодуються, але кінцеві пробіли кодуються. Якщо необов’язковий аргумент header присутній і відповідає дійсності, пробіли будуть закодовані як підкреслення відповідно до RFC 1522. Якщо необов’язковий аргумент header присутній і false, символи нового рядка також будуть закодовані; інакше перетворення переводу рядка може пошкодити двійковий потік даних.

binascii.a2b_hqx(string)

Convert binhex4 formatted ASCII data to binary, without doing RLE-decompression. The string should contain a complete number of binary bytes, or (in case of the last portion of the binhex4 data) have the remaining bits zero.

Застаріло починаючи з версії 3.9.

binascii.rledecode_hqx(data)

Perform RLE-decompression on the data, as per the binhex4 standard. The algorithm uses 0x90 after a byte as a repeat indicator, followed by a count. A count of 0 specifies a byte value of 0x90. The routine returns the decompressed data, unless data input data ends in an orphaned repeat indicator, in which case the Incomplete exception is raised.

Змінено в версії 3.2: Accept only bytestring or bytearray objects as input.

Застаріло починаючи з версії 3.9.

binascii.rlecode_hqx(data)

Perform binhex4 style RLE-compression on data and return the result.

Застаріло починаючи з версії 3.9.

binascii.b2a_hqx(data)

Perform hexbin4 binary-to-ASCII translation and return the resulting string. The argument should already be RLE-coded, and have a length divisible by 3 (except possibly the last fragment).

Застаріло починаючи з версії 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: The result is always unsigned. To generate the same numeric value when using Python 2 or earlier, use crc32(data) & 0xffffffff.

binascii.b2a_hex(data[, sep[, bytes_per_sep=1]])
binascii.hexlify(data[, sep[, bytes_per_sep=1]])

Повертає шістнадцяткове представлення двійкових даних. Кожен байт даних перетворюється у відповідне 2-значне шістнадцяткове представлення. Тому повернутий об’єкт 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 у базових 16, 32, 64 та 85.

Module binhex

Support for the binhex format used on the Macintosh.

Module uu

Support for UU encoding used on Unix.

Модуль quopri

Підтримка кодування для друку в лапках, що використовується в електронних повідомленнях MIME.