base64
Kompilyatoru base64 formatına və base64 formatından çevirmək lazımdır.
Base64 formatına kodlaşdırma aşağıdakı qaydada aparılır:
1. Əgər giriş mətninin uzunluğu baytlarla 3-ə bölünmürsə, o zaman uzunluğu 3-ə bölünənə qədər minimal sayda sıfır bayt əlavə edilir və əlavə olunan baytların sayı yadda saxlanılır.
2. Mətn 3 baytlıq qruplara bölünür. Hər bir qrup ayrıca kodlaşdırılır.
3. Üç baytdan 24-bitlik ədəd əldə edilir. Üçlüyün birinci baytı ən böyük, üçüncü isə ən kiçikdir.
4. 24-bitlik ədəd dörd 6-bitlik qrupa bölünür. Ən böyük 6 bit kodlaşdırıcı dördlüyün birinci simvolunu, ən kiçik 6 bit isə sonuncu simvolu müəyyən edir.
5. Bitlərin altılıqları aşağıdakı dəstənin simvolları ilə kodlaşdırılır:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
0 nömrəsi 'A' hərfi ilə, 1 nömrəsi 'B' hərfi ilə, 63 nömrəsi isə '/' simvolu ilə kodlaşdırılır.
6. Alınan dördlüklər, onlardan alınan üçlüklərin ardıcıllığı ilə bir-birinin ardınca yazılır.
7. Giriş mətninin sonuna 1-ci addımda neçə sıfır simvolu əlavə olunduğu xatırlanır və kodlaşdırılmış mətnin son simvolları '=' ilə əvəz olunur.
8. Mətn 76 simvolluq qruplara bölünür (sonuncuda daha az ola bilər) və hər bir belə qrup ayrıca sətirdə yazılır. Hər bir boş olmayan sətir sətir keçidi ilə bitməlidir (simvollar 13 10).
Giriş verilənləri
Birinci sətirdə giriş faylındakı məlumatın tipi, ikinci sətir boş, sonra isə kodlaşdırılması və ya dekodlaşdırılması lazım olan məlumat gəlir.
Əgər mətn kodlaşdırılmalıdırsa, fayl 'Content-Transfer-Encoding: 8bit' simvolları ilə başlayır, sonra 4 simvol 13 10 13 10 gəlir və faylın qalan hissəsi kodlaşdırılacaq baytlar dəstidir. Kodlaşdırılmış mətnin həcmi ("mətn" ikili məlumat ola bilər) 100 000 baytı keçmir.
Əgər mətn dekodlaşdırılmalıdırsa, fayl 'Content-Transfer-Encoding: base64' simvolları ilə başlayır, sonra 4 simvol 13 10 13 10 gəlir və faylın qalan hissəsi base64 ilə kodlaşdırılmış mətndir. Verilmişdən alınan kodlaşdırılmış mətn 100 000 baytı keçmir.
Çıxış verilənləri
Əks məlumat tipindən olan sətiri, sonra boş sətiri, sonra isə kodlaşdırma və ya dekodlaşdırmanın nəticəsini çıxarın.
Əgər mətn kodlaşdırılmalı idisə, çıxış məlumatları 'Content-Transfer-Encoding: base64' simvolları ilə başlamalıdır, sonra 4 simvol 13 10 13 10 gəlməlidir və faylın sonuna qədər base64 ilə kodlaşdırılmış mətn olmalıdır.
Əgər mətn dekodlaşdırılmalı idisə, çıxış məlumatları 'Content-Transfer-Encoding: 8bit' simvolları ilə başlamalıdır, sonra 4 simvol 13 10 13 10 gəlməlidir və faylın sonuna qədər dekodlaşdırılmış mətn olmalıdır.