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. Deze tool implementeert de Ascii85-variant van Adobe, die in PostScript- en PDF-bestanden zit. De encoder verpakt de uitvoer altijd in <~ en ~>; de decoder accepteert invoer met of zonder die tekens.

Base85 (Ascii85) converteren

  1. 1

    Kies encoderen of decoderen

    Encoderen zet ruwe bytes om in Ascii85; decoderen zet een Ascii85-string weer om in bytes.

  2. 2

    Plak je tekst

    Plak de te encoderen bytes of de te decoderen Ascii85-string in het invoerveld.

  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 opgevuld en afgekapt.

  4. 4

    Kopieer het resultaat

    Ascii85-uitvoer is verpakt in `<~` en `~>`. Plak het opnieuw om het te decoderen; de tekens worden automatisch verwijderd.

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 en 2 MB in hex.

Het Ascii85-alfabet

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

Z85 (ZeroMQ) en het RFC 1924-alfabet voor IPv6 zijn andere toewijzingen van hetzelfde 85-tekensidee. Deze tool implementeert ze niet; strings die in die varianten zijn gecodeerd, worden hier dus verkeerd gedecodeerd.

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 grondtal 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 ingesloten afbeeldingen en lettertypen die een 7-bit transport moeten overleven (oude faxachtige systemen). Dezelfde codering zit in veel PostScript-bestanden en in e-mailveilige binaire transports.

Speciale gevallen

  • Blok van 4 bytes met alleen nullen: Ascii85 codeert dit als het enkele teken z in plaats van !!!!!.
  • Laatste gedeeltelijke blok: wordt opgevuld met nulbytes, waarna het bijbehorende aantal uitvoertekens aan het einde wordt afgekapt.

Veelgestelde vragen

Kleinere uitvoer, ja. Universeel compatibel, nee. Ascii85 bevat tekens zoals <, >, &, " die escaping nodig hebben in XML, JSON en URL’s. De meeste tooling spreekt native Base64.

In PostScript- en PDF-streams, waar de gecodeerde regio met <~ en ~> wordt gemarkeerd. PDF-viewers en editors verwerken deze codering automatisch.

Nee. Hij implementeert alleen Adobe Ascii85. Z85 (ZeroMQ) en het RFC 1924-alfabet voor IPv6 kennen de 85 tekens anders toe, dus een string die in die varianten is gecodeerd, wordt hier verkeerd gedecodeerd.

Die markeren de gecodeerde regio volgens de Ascii85-conventie. De encoder voegt ze altijd toe en de decoder verwijdert ze automatisch als ze aanwezig zijn. Je kunt ook een string zonder ze plakken.

Gerelateerde tools

Tool beschikbaar in andere talen