Base85-kodare och avkodare

Base85 pressar fyra bytes till fem ASCII-tecken - tätare än Base64:s 3-till-4-förhållande - genom att använda ett alfabet med 85 tecken i stället för 64. Adobes Ascii85-variant finns inuti varje PostScript- och PDF-fil; den nyare Z85-varianten (ZeroMQ) undviker tecken som ställer till det i C-strängar och XML. Det här verktyget kodar och avkodar båda, med valfria avgränsare.

Så konverterar du Base85

  1. 1

    Välj variant

    Ascii85 för PDF/PostScript-resurser; Z85 för källkod och nätverksprotokoll.

  2. 2

    Klistra in text eller ladda upp en fil

    Kodningsriktningen tar råa bytes; avkodningsriktningen tar en Base85-sträng.

  3. 3

    Encodern delar upp i 4-byte-block

    Varje 4-byte-block blir en Base85-sträng med 5 tecken. Det sista blocket paddas och trunkeras.

  4. 4

    Kopiera resultatet

    Ascii85 kan omslutas med avgränsarna `<~` och `~>`; Z85 utan avgränsare.

Jämförelse av storleksoverhead

Kodning Tecken per 4 bytes Overhead jämfört med binärt
Hex 8 +100%
Base64 5.33 (avrundas upp till 8 med padding) +37%
Base85 5 +25%
Rå binär 4 0

Alltså blir 1 MB binärt 1.25 MB i Base85, 1.33 MB i Base64 och 2 MB i hex.

Ascii85 jämfört med Z85-alfabet

Ascii85 (RFC 1924 / Adobe): tecken ! till u (33-117 i ASCII), plus z som genväg för 4 nollbytes. Används i PostScript- och PDF-strömmar, omslutet som <~...~>.

Z85 (ZeroMQ): en delmängd som undviker citattecken och escapes:

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

Säkert att bädda in i JSON, XML, C-strängar och källkod utan escaping.

Så fungerar matematiken

Varje 4 bytes läses som ett big-endian 32-bitars heltal N. De 5 utdatatecknen är siffrorna för N i bas 85, mest signifikant först. 85^5 = 4 437 053 125, vilket är större än 2^32, så 4 bytes får alltid plats i 5 tecken.

När Ascii85 spelar roll

Öppna vilken PDF som helst i en textredigerare och sök efter ASCII85Decode - Adobe använder det som ett filter för inbäddade bilder och typsnitt som måste överleva en 7-bitars transport (gamla faxliknande system). Z85 används brett i ZeroMQ CURVE-autentiseringsnycklar.

Specialfall

  • 4-byte-block med bara nollor - Ascii85 kodar det som det enda tecknet z i stället för !!!!!.
  • 4-byte-block med bara mellanslag - Vissa varianter använder y för fyra mellanslag, andra gör det inte.
  • Sista partiella blocket - Paddas med nollbytes, och motsvarande antal utdatatecken trunkeras i slutet.

Vanliga frågor

Mindre utdata, ja. Universellt kompatibelt, nej. Base85 innehåller tecken som <, >, &, " (i Ascii85) som behöver escapes i XML, JSON och URL:er. Z85 undviker detta men de flesta verktyg talar Base64 inbyggt.

Ascii85 om du arbetar med PostScript- eller PDF-filer. Z85 för källkod, konfigurationsfiler och nätverksprotokoll. RFC 1924 IPv6-kodning är en annan tilldelning av samma 85 tecken och används sällan i praktiken.

Nej. De använder olika alfabet. Att avkoda Ascii85 med en Z85-tabell ger skräp. Välj en innan du kodar och håll dig till den.

För Adobe Ascii85 i PDF- eller PostScript-strömmar, ja - de markerar den kodade regionen. För fristående användning och all Z85-utdata behövs inga avgränsare.

Relaterade verktyg