0

Decodificato

Ascii85

Codificato

Ascii85
Variante

Informazioni su Ascii85

Ascii85 è uno schema di codifica che utilizza caratteri ASCII stampabili a 7 bit. È anche chiamato Base85.

Ascii85 divide i dati in blocchi di 4 byte e li converte in 5 caratteri ASCII.

Esistono diverse varianti di Ascii85. DenCode supporta i seguenti tre tipi. L'originale è btoa, seguito da Adobe e Z85.

Panoramica
Z85Utilizzato in ZeroMQ. Evita caratteri che richiedono escape come "\" (backslash) o "'" (apostrofo).
AdobeUtilizzato per codificare immagini e altri dati nei file PostScript e PDF (Portable Document Format) di Adobe. È racchiuso tra "<~" e "~>".
btoaFormato del comando btoa di UNIX. Usato in passato per lo scambio di dati binari, ma ora meno comune. È racchiuso tra le linee "xbtoa Begin" e "xbtoa End".

I caratteri ASCII utilizzati in Ascii85 sono i seguenti. Tratta un valore di 4 byte come un intero senza segno big-endian, calcola le cifre in base 85 (5 cifre) e ottiene il risultato della conversione Ascii85 basato sui seguenti caratteri ASCII.

Caratteri ASCII
Z850123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#
Adobe!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
btoa!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
(L'originale usava caratteri da " " (spazio) a "t", ma alcuni mailer rimuovevano lo spazio finale, quindi è stato sostituito con caratteri da "!" a "u".)

Ad esempio, la conversione di "Hello" in Ascii85 è la seguente.

1. Dividi ogni 4 byte. Se meno di 4 byte, riempi con "00" alla fine.

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

2. Tratta ogni 4 byte come un intero senza segno big-endian e converti il valore nelle cifre in 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. Converti ogni cifra in base 85 in un carattere ASCII. Se è stato aggiunto padding "00" alla fine, rimuovi la parte di padding per Adobe/Z85.

23226652493557336526
Z85nm=QNzV
Adobe87cURDZ
btoa87cURDZBb;

4. Unisci tutti i caratteri per ottenere il risultato della conversione Ascii85. Adobe è racchiuso tra "<~" & "~>" e va a capo ogni 80 caratteri. btoa è racchiuso tra "xbtoa Begin" & "xbtoa End" (inclusi lunghezza dati e checksum) e va a capo ogni 78 caratteri.

Risultato conversione
Z85nm=QNzV
Adobe<~87cURDZ~>
btoaxbtoa Begin
87cURDZBb;
xbtoa End N 5 5 E 42 S 1f9 R a9f

Sono definite anche alcune abbreviazioni.

Abbreviazione
Z85Nessuna
Adobe00000000(16) -> z
btoa00000000(16) -> z
20202020(16) -> y (da btoa v4.2)