Decodificar Base64 (2)

(Este problema utiliza la función char\_to\_base64 del problema "Decodificar Base64 (1)".)

Se trata de hacer un programa que, dada una secuencia de caracteres en la entrada (uno de los 64 que representan los dígitos de base 64), la decodifique en sus bytes. La decodificación funciona de la siguiente manera:

  1. Primero, para cada grupo de 4 caracteres (o cuarteto) de la entrada c1c_1, c2c_2, c3c_3 y c4c_4, los transformamos en sus dígitos correspondientes d1d_1, d2d_2, d3d_3, d4d_4, usando la función char_to_base64.

  2. Después, con los 4 dígitos did_i reconstruimos el natural xx aplicando la fórmula:

    x=((d164+d2)64+d3)64+d4x = ((d_1 \cdot 64 + d_2) \cdot 64 + d_3) \cdot 64 + d_4

  3. A continuación, reinterpretamos xx en base 256, y extraemos las cifras, que ahora son 3: B1B_1, B2B_2, y B3B_3. El proceso es totalmente análogo a extraer las cifras de un número en base 10, pero en base 256. Lo que habremos hecho es calcular los dígitos BiB_i de la fórmula siguiente:

    x=(B1256+B2)256+B3x = (B_1 \cdot 256 + B_2) \cdot 256 + B_3

    (Hay que recordar que el proceso de extracción de las cifras trabajado en PRO1 produce las cifras al revés, comenzando por B3B_3)

  4. Finalmente, mostramos B1B_1, B2B_2 y B3B_3 como números naturales por pantalla, en este orden.

La codificación en base 64 siempre tiene un número de caracteres múltiplo de 4, pero justo al final de la secuencia puede haber ’=’ o ’==’, que nos dice que el número de bytes del último cuarteto son 2 o 1, y no 3:

Si el último cuarteto tiene algún ’=’ al final:

Entrada

La entrada consiste en varios casos, donde cada caso es una secuencia de caracteres base 64 en la misma línea y con un punto al final.

Salida

La salida debe ser una línea para cada caso con los bytes como números naturales. Antes de cada byte, incluido el primero, debe haber un espacio.

Observación

Información del problema

Autoría: Pau Fernández

Generación: 2026-01-25T12:55:38.631Z

© Jutge.org, 2006–2026.
https://jutge.org