Codificar en Base64 (2)

(Aquest problema fa servir la funció base64\_to\_char del problema "Codificar en Base64 (1)".)

Es tracta de fer un programa que, donada una seqüència de bytes a l’entrada (naturals entre 0 i 255), la codifiqui en base 64. La codificació funciona de la següent manera, i treballa amb tripletes de 3 bytes:

  1. Primer, cada 3 bytes d’entrada B1B_1, B2B_2 i B3B_3, construïm un enter xx en base 256 de la següent manera:

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

  2. Després, reinterpretem xx en base 64 i n’extraiem les xifres, que ara són 4: d1d_1, d2d_2, d3d_3, i d4d_4. El procés és totalment anàleg a extreure les xifres d’un nombre en base 10, però en base 64. El que estem fent és calcular els dígits did_i de la fórmula següent:

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

    (Cal recordar que el procés d’extracció de xifres treballat a PRO1 produeix les xifres al revés, és a dir, començant per d4d_4.)

  3. Per últim, usant la funció base64_to_char convertim d1d_1, d2d_2, d3d_3 i d4d_4 en caràcters i els mostrem a la sortida en aquest ordre.

Si la seqüència d’entrada no té un llargada múltiple de 3, just al final, tindrem un grup de només 1 o 2 bytes:

Entrada

L’entrada consisteix en diverses seqüències de bytes. Cadascuna comença amb un enter nn que indica el nombre de bytes que segueixen i després hi ha nn bytes, a on cadascún és només un nombre natural entre 0 i 255 (ambdós inclosos).

Sortida

La sortida ha de ser una línia per a cada cas amb la codificació en base 64 de la seqüència de bytes de l’entrada, sense espais entre els caràcters.

Observacions

Informació del problema

Autoria: Pau Fernández

Generació: 2026-01-25T13:19:01.988Z

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