0

Resultado da Decodificação

Ascii85

Resultado da Codificação

Ascii85
Variante

Sobre Ascii85

Ascii85 é um método de codificação que utiliza caracteres ASCII imprimíveis de 7 bits. Também é chamado de Base85.

No Ascii85, os dados são divididos em 4 bytes cada e convertidos em 5 caracteres ASCII.

Existem várias variantes do Ascii85. O DenCode suporta os três tipos seguintes de Ascii85. O original é btoa, e Adobe e Z85 apareceram depois.

Visão Geral
Z85Usado no ZeroMQ. Projetado para evitar o uso de caracteres que requerem escape, como "\" (barra invertida) e "'" (apóstrofo).
AdobeUsado para codificar imagens, etc., dentro de arquivos Adobe PostScript e PDF (Portable Document Format). É delimitado por "<~" e "~>".
btoaFormato do comando btoa do UNIX. Usado para troca de dados binários no passado, mas não é comum hoje em dia. Delimitado por linhas "xbtoa Begin" e "xbtoa End".

Os caracteres ASCII usados no Ascii85 são os seguintes. Um valor de 4 bytes é tratado como um inteiro sem sinal big-endian, cada dígito na base 85 (5 dígitos) é calculado e o resultado da conversão Ascii85 é obtido com base nos seguintes caracteres ASCII.

Caracteres ASCII
Z850123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#
Adobe!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
btoa!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
(Originalmente eram os caracteres de " " (espaço) a "t", mas como alguns mailers removiam espaços finais, eles foram substituídos por caracteres de "!" a "u", excluindo o espaço.)

Por exemplo, converter "Hello" em Ascii85 resulta no seguinte:

1. Divida a cada 4 bytes. Se for menor que 4 bytes, preencha o final com "00".

48656C6C(16) 6F000000(16)  (Hell o)

2. Trate cada 4 bytes como um inteiro sem sinal big-endian e converta o valor para cada dígito na base 85.

48656C6C(16)
= 1214606444(10)
= 23 * 854 + 22 * 853 + 66 * 852 + 52 * 85 + 49
6F000000(16)
= 1862270976(10)
= 35 * 854 + 57 * 853 + 33 * 852 + 65 * 85 + 26

3. Converta cada dígito da base 85 em caracteres ASCII. Se o final foi preenchido com "00", exclua o preenchimento no caso de Adobe/Z85.

23226652493557336526
Z85nm=QNzV
Adobe87cURDZ
btoa87cURDZBb;

4. Conecte todos os caracteres para obter o resultado da conversão Ascii85. Adobe é delimitado por "<~" & "~>" e quebra a linha a cada 80 caracteres. btoa é delimitado por "xbtoa Begin" & "xbtoa End" (incluindo comprimento de dados, soma de verificação, etc.) e quebra a linha a cada 78 caracteres.

Resultado da conversão
Z85nm=QNzV
Adobe<~87cURDZ~>
btoaxbtoa Begin
87cURDZBb;
xbtoa End N 5 5 E 42 S 1f9 R a9f

Além disso, algumas formas abreviadas são definidas.

Forma abreviada
Z85Nenhuma
Adobe00000000(16) -> z
btoa00000000(16) -> z
20202020(16) -> y (btoa v4.2 ou posterior)