# `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.