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. Det här verktyget implementerar Adobes Ascii85-variant, den som finns i PostScript- och PDF-filer. Kodaren omsluter alltid utdatan med avgränsarna <~ och ~>; avkodaren tar emot indata med eller utan dem.

Så konverterar du Base85 (Ascii85)

  1. 1

    Välj koda eller avkoda

    Att koda omvandlar råa bytes till Ascii85; att avkoda omvandlar en Ascii85-sträng tillbaka till bytes.

  2. 2

    Klistra in din text

    Klistra in bytes att koda eller Ascii85-strängen att avkoda i inmatningsrutan.

  3. 3

    Kodaren 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-utdata omsluts av `<~` och `~>`. Klistra in den igen för att avkoda; avgränsarna tas bort automatiskt.

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-alfabetet

Ascii85 (Adobe): tecken ! till u (33-117 i ASCII), plus z som genväg för 4 nollbytes. Det är standardkodningen i PostScript- och PDF-strömmar, omsluten som <~...~>.

Z85 (ZeroMQ) och RFC 1924-alfabetet för IPv6 är andra tilldelningar av samma 85-teckensidé. Det här verktyget implementerar dem inte, så en sträng som kodats i dessa varianter avkodas felaktigt här.

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). Samma kodning finns i många PostScript-filer och i binära transporter som är säkra för e-post.

Specialfall

  • 4-byte-block med bara nollor: Ascii85 kodar det som det enda tecknet z i stället för !!!!!.
  • Sista partiella blocket: paddas med nollbytes, och motsvarande antal utdatatecken trunkeras i slutet.

Vanliga frågor

Mindre utdata, ja. Universellt kompatibelt, nej. Ascii85 innehåller tecken som <, >, &, " som behöver escapes i XML, JSON och URL:er. De flesta verktyg talar Base64 inbyggt.

I PostScript- och PDF-strömmar, där den kodade regionen markeras med <~ och ~>. PDF-läsare och redigerare hanterar den här kodningen automatiskt.

Nej. Det implementerar bara Adobe Ascii85. Z85 (ZeroMQ) och RFC 1924-alfabetet för IPv6 tilldelar de 85 tecknen annorlunda, så en sträng kodad i dessa varianter avkodas felaktigt här.

De markerar den kodade regionen enligt Ascii85-konventionen. Kodaren lägger alltid till dem och avkodaren tar bort dem automatiskt om de finns. Du kan också klistra in en sträng utan dem.

Relaterade verktyg

Verktyget finns på andra språk