0

Resultado Decodificado

Ascii85

Resultado Codificado

Ascii85
Variante

Sobre Ascii85

Ascii85 es un método de codificación que utiliza caracteres ASCII imprimibles de 7 bits. También se llama Base85.

En Ascii85, los datos se dividen en 4 bytes cada uno y se convierten en 5 caracteres ASCII.

Existen varias variantes de Ascii85. DenCode soporta los siguientes tres tipos de Ascii85. El original es btoa, seguido por Adobe y Z85.

Resumen
Z85Utilizado en ZeroMQ. Evita caracteres que requieren escape como "\" (barra invertida) o "'" (apóstrofe).
AdobeUtilizado para codificar imágenes en archivos PostScript y PDF (Portable Document Format) de Adobe. Encerrado entre "<~" y "~>".
btoaFormato del comando btoa de UNIX. Usado en el pasado para intercambio de datos binarios, pero no es común hoy en día. Encerrado entre líneas "xbtoa Begin" y "xbtoa End".

Los caracteres ASCII utilizados en Ascii85 son los siguientes. Se trata un valor de 4 bytes como un entero sin signo big-endian, se calcula cada dígito (5 dígitos) en base 85, y se obtiene el resultado de conversión Ascii85 basado en los siguientes caracteres ASCII.

Caracteres ASCII
Z850123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#
Adobe!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
btoa!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
(Originalmente caracteres desde " " (espacio) hasta "t", pero debido a que algunos clientes de correo eliminaban espacios al final, se reemplazó posteriormente con caracteres desde "!" hasta "u".)

Por ejemplo, convertir "Hello" en Ascii85 da el siguiente resultado:

1. Dividir en grupos de 4 bytes. Si hay menos de 4 bytes, rellenar el final con "00".

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

2. Tratar cada 4 bytes como un entero sin signo big-endian y convertir ese valor a dígitos en 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. Convertir cada dígito base 85 a caracteres ASCII. Si se rellenó con "00", excluir el relleno para Adobe/Z85.

23226652493557336526
Z85nm=QNzV
Adobe87cURDZ
btoa87cURDZBb;

4. Unir todos los caracteres para obtener el resultado de la conversión Ascii85. Adobe se encierra en "<~" y "~>" y hace salto de línea cada 80 caracteres. btoa se encierra en "xbtoa Begin" y "xbtoa End" (incluyendo longitud de datos, suma de control, etc.) y hace salto de línea cada 78 caracteres.

Resultado de conversión
Z85nm=QNzV
Adobe<~87cURDZ~>
btoaxbtoa Begin
87cURDZBb;
xbtoa End N 5 5 E 42 S 1f9 R a9f

Además, se definen algunas formas abreviadas.

Abreviatura
Z85Ninguna
Adobe00000000(16) -> z
btoa00000000(16) -> z
20202020(16) -> y (btoa v4.2 o posterior)