Codificar en Base64 (2)

(Este problema utiliza la función base64\_to\_char del problema "Codificar en Base64 (1)".)

Se trata de hacer un programa que, dada una secuencia de bytes en la entrada (naturales entre 0 y 255), la codifique en base 64. La codificación funciona de la siguiente manera, y trabaja con tripletas de 3 bytes:

  1. Primero, cada 3 bytes de entrada B1B_1, B2B_2 y B3B_3, construimos un entero xx en base 256 de la siguiente manera:

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

  2. Después, reinterpretamos xx en base 64 y extraemos las cifras, que ahora son 4: d1d_1, d2d_2, d3d_3, y d4d_4. El proceso es totalmente análogo a extraer las cifras de un número en base 10, pero en base 64. Lo que estamos haciendo es calcular los dígitos did_i de la fórmula siguiente:

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

    (Cabe recordar que el proceso de extracción de cifras trabajado en PRO1 produce las cifras al revés, es decir, comenzando por d4d_4.)

  3. Por último, usando la función base64_to_char convertimos d1d_1, d2d_2, d3d_3 y d4d_4 en caracteres y los mostramos en la salida en este orden.

Si la secuencia de entrada no tiene una longitud múltiple de 3, justo al final, tendremos un grupo de solo 1 o 2 bytes:

Entrada

La entrada consiste en varias secuencias de bytes. Cada una comienza con un entero nn que indica el número de bytes que siguen y después hay nn bytes, donde cada uno es solo un número natural entre 0 y 255 (ambos incluidos).

Salida

La salida debe ser una línea para cada caso con la codificación en base 64 de la secuencia de bytes de la entrada, sin espacios entre los caracteres.

Observaciones

Información del problema

Autoría: Pau Fernández

Generación: 2026-01-25T13:18:57.597Z

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