# `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 `base64` 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, /, *, strict_mode=False)

  Перетворіть блок даних base64 назад у двійковий і поверніть двійкові дані. Одночасно можна передати більше одного рядка.

  If strict_mode is true, only valid base64 data will be converted. Invalid base64 data will raise `binascii.Error`.

  Valid base64:

  - Conforms to RFC 3548.

  - Contains only characters from the base64 alphabet.

  - Contains no excess data after padding (including excess padding, newlines, etc.).

  - Does not start with a padding.

  Змінено в версії 3.11: Added the strict_mode parameter.

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

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.

Модуль `quopri`

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