El reto
Escriba un programa que pueda tomar una entrada de una cadena de una sola línea que contenga caracteres imprimibles ASCII y generar la misma cadena codificada en Base85 (usando una convención big-endian). Puede suponer que la entrada siempre será ≤ 100 caracteres.
Una guía para Base85
Cuatro octetos están codificados en (generalmente) cinco caracteres Base85.
Base85 caracteres van desde
!
au
(ASCII 33 - 117) yz
(ASCII 122).Para codificar, realiza continuamente la división por 85 en los cuatro octetos (un número de 32 bits) y agrega 33 al resto (después de cada división) para obtener el carácter ASCII para el valor codificado. Por ejemplo, la primera aplicación de este proceso produce el carácter más a la derecha en el bloque codificado.
Si un conjunto de cuatro octetos contiene solo bytes nulos, se codifican como en
z
lugar de!!!!!
.Si el último bloque es más corto que cuatro octetos, se rellena con bytes nulos. Después de la codificación, el mismo número de caracteres que se agregaron como relleno se eliminan del final de la salida.
El valor codificado debe ir precedido
<~
y seguido de~>
.El valor codificado no debe contener espacios en blanco (para este desafío).
Ejemplos
In: easy
Out: <~ARTY*~>
In: test
Out: <~FCfN8~>
In: code golf
Out: <~@rGmh+D5V/Ac~>
In: Programming Puzzles
Out: <~:i^JeEa`g%Bl7Q+:j%)1Ch7Y~>
El siguiente fragmento codificará una entrada dada a Base85.