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 of0
specifies a byte value of0x90
. The routine returns the decompressed data, unless data input data ends in an orphaned repeat indicator, in which case theIncomplete
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.