Base85 encoder en decoder

Base85 perst vier bytes in vijf ASCII-tekens — dichter dan Base64’s 3-voor-4-verhouding — door een alfabet van 85 tekens te gebruiken in plaats van 64. Adobe’s Ascii85-variant zit in elk PostScript- en PDF-bestand; de nieuwere Z85-variant (ZeroMQ) vermijdt tekens die C-strings en XML breken. Deze tool encodeert en decodeert beide, met optionele delimiters.

Base85 converteren

  1. 1

    Kies de variant

    Ascii85 voor PDF/PostScript-assets; Z85 voor broncode en netwerkprotocollen.

  2. 2

    Plak tekst of upload een bestand

    Encode-richting neemt ruwe bytes; decode-richting neemt een Base85-string.

  3. 3

    De encoder deelt op in blokken van 4 bytes

    Elk blok van 4 bytes wordt een Base85-string van 5 tekens. Het laatste blok wordt gepad en afgekapt.

  4. 4

    Kopieer het resultaat

    Ascii85 optioneel verpakt met `<~` en `~>` delimiters; Z85 zonder delimiters.

Vergelijking van grootte-overhead

Codering Tekens per 4 bytes Overhead t.o.v. binair
Hex 8 +100%
Base64 5.33 (afgerond naar 8 met padding) +37%
Base85 5 +25%
Ruwe binair 4 0

Dus 1 MB binair wordt 1.25 MB in Base85, 1.33 MB in Base64, 2 MB in hex.

Ascii85 versus Z85-alfabetten

Ascii85 (RFC 1924 / Adobe): tekens ! tot en met u (33-117 in ASCII), plus z als snelkoppeling voor 4 nulbytes. Gebruikt in PostScript- en PDF-streams, verpakt als <~...~>.

Z85 (ZeroMQ): een subset die aanhalingstekens en escapes vermijdt:

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

Veilig te embedden in JSON, XML, C-strings en broncode zonder escaping.

Hoe de wiskunde werkt

Elke 4 bytes worden gelezen als een big-endian 32-bit integer N. De 5 uitvoertekens zijn de cijfers van N in basis 85, meest significante eerst. 85^5 = 4 437 053 125, wat groter is dan 2^32, dus 4 bytes passen altijd in 5 tekens.

Wanneer Ascii85 ertoe doet

Open een willekeurige PDF in een teksteditor en zoek naar ASCII85Decode — Adobe gebruikt het als filter voor embedded afbeeldingen en fonts die een 7-bit transport moeten overleven (oude faxachtige systemen). Z85 wordt veel gebruikt in ZeroMQ CURVE-authenticatiesleutels.

Speciale gevallen

  • Volledig nul 4-byte-blok — Ascii85 encodeert dit als het enkele teken z in plaats van !!!!!.
  • Volledig spatie 4-byte-blok — Sommige varianten gebruiken y voor vier spaties, andere niet.
  • Laatste gedeeltelijke blok — Opgevuld met nulbytes, waarna het overeenkomstige aantal uitvoertekens aan het einde wordt afgekapt.

Veelgestelde vragen

Kleinere uitvoer, ja. Universeel compatibel, nee. Base85 bevat tekens zoals <, >, &, " (in Ascii85) die escaping nodig hebben in XML, JSON en URL’s. Z85 vermijdt dit, maar de meeste tooling spreekt native Base64.

Ascii85 als je met PostScript- of PDF-bestanden werkt. Z85 voor broncode, configbestanden en netwerkprotocollen. RFC 1924 IPv6-encoding is een andere toewijzing van dezelfde 85 tekens en wordt in de praktijk zelden gebruikt.

Nee. Ze gebruiken verschillende alfabetten. Ascii85 decoderen met een Z85-tabel levert rommel op. Kies er een voordat je encodeert en blijf daarbij.

Voor Adobe Ascii85 in PDF- of PostScript-streams wel — ze markeren de gecodeerde regio. Voor zelfstandig gebruik en alle Z85-uitvoer zijn geen delimiters nodig.

Gerelateerde tools