O desafio
Escreva um programa que possa receber uma entrada de uma string de linha única contendo qualquer caractere imprimível ASCII e produzir a mesma string codificada no Base85 (usando uma convenção big endian). Você pode assumir que a entrada sempre será ≤ 100 caracteres.
Um guia para a Base85
Quatro octetos são codificados em (geralmente) cinco caracteres Base85.
Caracteres Base85 variar desde
!
au
(ASCII 33-117) ez
(ASCII 122).Para codificar, você executa continuamente a divisão por 85 nos quatro octetos (um número de 32 bits) e adiciona 33 ao restante (após cada divisão) para obter o caractere ASCII para o valor codificado. Por exemplo, a primeira aplicação desse processo produz o caractere mais à direita no bloco codificado.
Se um conjunto de quatro octetos contiver apenas bytes nulos, eles serão codificados como um em
z
vez de!!!!!
.Se o último bloco for menor que quatro octetos, será preenchido com bytes nulos. Após a codificação, o mesmo número de caracteres adicionados como preenchimento é removido do final da saída.
O valor codificado deve ser precedido por
<~
e seguido por~>
.O valor codificado não deve conter espaços em branco (para este desafio).
Exemplos
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~>
O trecho a seguir codificará uma entrada fornecida para Base85.