Codificatore e Decodificatore Base85

Base85 comprime quattro byte in cinque caratteri ASCII — più denso del rapporto 3 a 4 di Base64 — utilizzando un alfabeto di 85 caratteri invece di 64. La variante Ascii85 di Adobe è inclusa in ogni file PostScript e PDF; la più recente variante Z85 (ZeroMQ) evita caratteri che rompono all’interno delle stringhe C e XML. Questo strumento codifica e decodifica entrambi, con delimitatori opzionali.

Come convertire Base85

  1. 1

    Scegli la variante

    Ascii85 per asset PDF/PostScript; Z85 per codice sorgente e protocolli di rete.

  2. 2

    Incolla il testo o carica un file

    La direzione di codifica prende byte grezzi; la direzione di decodifica prende una stringa Base85.

  3. 3

    Il codificatore suddivide in blocchi di 4 byte

    Ogni blocco di 4 byte diventa una stringa Base85 di 5 caratteri. L'ultimo blocco è riempito e troncato.

  4. 4

    Copia il risultato

    Ascii85 eventualmente racchiuso con i delimitatori `<~` e `~>`; Z85 senza delimitatori.

Confronto dell’overhead di dimensione

Codifica Caratteri per 4 byte Overhead rispetto al binario
Esadecimale 8 +100%
Base64 5.33 (arrotondato a 8 con riempimento) +37%
Base85 5 +25%
Binario grezzo 4 0

Quindi 1 MB di binario diventa 1.25 MB in Base85, 1.33 MB in Base64, 2 MB in esadecimale.

Alfabeto Ascii85 vs Z85

Ascii85 (RFC 1924 / Adobe): caratteri ! fino a u (33-117 in ASCII), più z come scorciatoia per 4 byte zero. Usato in flussi PostScript e PDF, racchiuso come <~...~>.

Z85 (ZeroMQ): un sottoinsieme che evita caratteri di citazione e escape:

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#

Sicuro da incorporare in JSON, XML, stringhe C e codice sorgente senza escape.

Come funziona la matematica

Ogni 4 byte vengono letti come un intero a 32 bit in big-endian N. I 5 caratteri di output sono le cifre di N in base 85, con il più significativo per primo. 85^5 = 4 437 053 125 che è maggiore di 2^32, quindi 4 byte si adattano sempre in 5 caratteri.

Quando Ascii85 è importante

Apri qualsiasi PDF in un editor di testo e cerca ASCII85Decode — Adobe lo usa come filtro per immagini e font incorporati che devono sopravvivere a un trasporto a 7 bit (sistemi in stile fax vecchi). Z85 è ampiamente usato nelle chiavi di autenticazione CURVE di ZeroMQ.

Casi speciali

  • Blocco di 4 byte tutto zero — Ascii85 lo codifica come il singolo carattere z invece di !!!!!.
  • Blocco di 4 byte tutto spazi — Alcune varianti usano y per quattro spazi, altre no.
  • Ultimo blocco parziale — Riempito con byte zero, e il numero corrispondente di caratteri di output è troncato alla fine.

Domande frequenti

Output più piccolo, sì. Universale compatibilità, no. Base85 contiene caratteri come <, >, &, " (in Ascii85) che necessitano di escape in XML, JSON e URL. Z85 evita questo ma la maggior parte degli strumenti parla nativamente Base64.

Ascii85 se stai lavorando con file PostScript o PDF. Z85 per codice sorgente, file di configurazione e protocolli di rete. La codifica IPv6 RFC 1924 è un’assegnazione diversa dei medesimi 85 caratteri ed è raramente usata in pratica.

No. Usano alfabeti diversi. Decodificare Ascii85 con una tabella Z85 produrrà spazzatura. Scegli uno prima di codificare e attieniti ad esso.

Per Adobe Ascii85 in flussi PDF o PostScript, sì — segnano la regione codificata. Per uso autonomo e tutto l’output Z85, non sono necessari delimitatori.

Strumenti correlati