En el problema Base64 (1), se explicaba como codificar un entero del 0 al 63 en un carácter A-Z, a-z, 0-9, +, /. En este problema te pedimos que codifiques cadenas arbitrarias de caracteres. Para ello, deberás seguir el siguiente proceso:
Por ejemplo, la codificación en binario de ALA es
01000001 | 01001100 | 010000001 |
que da lugar a los siguientes cuatro grupos de 6 bits,
010000 | 010100 | 1100010| 000001 |
que se corresponde a los números
16 | 20 | 50 | 1 |
que se codifica como QUyB.
Si la entrada no tiene un número de caracteres que sea múltiplo de 3, se hace un tratamiento especial:
Haz un programa que codifique y descodifique secuencias de caracteres en base 64.
Entrada
Un número arbitario de líneas, cada una de las cuales será de la forma C XXX o D YYY, donde XXX es una cadena arbitraria de caracteres que hay que codificar, y YYY es una codificación en base64 que hay que descodificar.
Salida
Para cada caso, escribe una línea con la codificación (C) o descodificación (D) según se pida. Se te garantiza que todos los caracteres que deberás codificar o decodificar no tienen ningún problema para leer o escribir (por ejemplo, no recibirás caracteres como el espacio, contrabarra, caracteres con valores menores a 32 o mayores a 126, etc.).
Puntuación
Entradas donde únicamente se pide codificar textos con un número de caracteres múltiple de 3.
Entradas donde únicamente se pide descodificar secuencias en base64 sin ningún caracter =, o sea, secuencias que dan lugar a textos con un número de caracteres múltiple de 3.
Entradas donde se pide codificar textos de todo tipo.
Entradas donde se pide descodificar secuencias en base64 de todo tipo.
Input
C ALA C ALAALAALA C 012345 C ABABAB
Output
QUxB QUxBQUxBQUxB MDEyMzQ1 QUJBQkFC
Input
D QUxB D QUxBQUxBQUxB D MDEyMzQ1 D QUJBQkFC D VGhpc0lzQVRleHRJbkJhc2U2NCEh
Output
ALA ALAALAALA 012345 ABABAB ThisIsATextInBase64!!
Input
C HOLA_CARACOLA C ThisIsATextInBase64 C ThisIsATextInBase64! C Hi
Output
SE9MQV9DQVJBQ09MQQ== VGhpc0lzQVRleHRJbkJhc2U2NA== VGhpc0lzQVRleHRJbkJhc2U2NCE= SGk=
Input
D SE9MQV9DQVJBQ09MQQ== D VGhpc0lzQVRleHRJbkJhc2U2NA== D VGhpc0lzQVRleHRJbkJhc2U2NCE= D SGk=
Output
HOLA_CARACOLA ThisIsATextInBase64 ThisIsATextInBase64! Hi