base64
Потрібно написати конвертор у формат base64 та з формату base64.
Кодування в формат base64 відбувається наступним чином:
1. Якщо довжина вхідного тексту в байтах не ділиться на 3, то він доповнюється мінімальною кількістю нульових байтів так, щоб довжина ділилась на 3, кількість доданих байтів запам'ятовується.
2. Текст розбивається на групи по 3 байти. Кожна група кодується окремо.
3. З трьох байтів отримується 24-бітне число. Перший байт трійки є старшим, третій — молодшим.
4. 24-бітне число розбивається на чотири 6-бітні групи. Старші 6 біт визначають перший символ кодуючої четвірки, молодші 6 біт — останній і т.п.
5. Шестірки бітов кодуються символами наступного набору:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
Номер 0 кодується буквою 'A', номер 1 буквою 'B', номер 63 символом '/'.
6. Отримані четвірки символів записуаються одна за одною у тому ж порядку, у якому йшли трійки, з яких вони були отримані.
7. Згадується, скільки нульових символів було додано в кінець вхідного тексту на кроці 1, і стільки останніх символів закодованого тексту замінюється на '='.
8. Текст розбивається на групи по 76 символів (в останній може бути менше) і кожна така група записується в окремому рядку. Кожен непустий рядок повинен закінчуватись переводенням рядка (символи 13 10).
Вхідні дані
У першому рядку міститься тип інформації у вхідному файлі, другий рядок пустий, далі йде інформація, яку потрібно закодувати чи розкодувати.
Якщо потрібно закодувати текст, то файл починається символами 'Content-Transfer-Encoding: 8bit', за якими йде 4 символи 13 10 13 10 — і весь залишок файлу — набір байтів, які підлягають кодуванню. Об'єм кодованого тексту ("текст" може бути двійковими даними) не перевищує 100 000 байт.
Якщо потрібно декодувати текст, то файл починається символами 'Content-Transfer-Encoding: base64', за якими йде 4 символи 13 10 13 10 — і весь залишок файлу — текст, закодований base64. Закодований текст, отриманий з заданого, не перевищує 100 000 байт.
Вихідні дані
Виведіть рядок з протилежним типом інформації, потім пустий рядок, потім результат кодування або декодування.
Якщо потрібно було закодувати текст, то вихідні дані повинні починатись символами 'Content-Transfer-Encoding: base64', за якими повинні йти 4 символи 13 10 13 10 — і далі до кінця файлу повинен міститись текст, закодований base64.
Якщо потрібно було розкодувати текст, то вихідні даніе повинні починатись символами 'Content-Transfer-Encoding: 8bit', за якими повинні йти 4 символи 13 10 13 10 — і далі до кінця файлу повинен міститись розкодований текст.