Koder i dekoder Base85

Base85 upycha cztery bajty w pięciu znakach ASCII — gęściej niż proporcja 3-do-4 w Base64 — używając alfabetu 85-znakowego zamiast 64. Wariant Adobe Ascii85 znajduje się w każdym pliku PostScript i PDF; nowszy wariant Z85 (ZeroMQ) unika znaków, które psują się w stringach C i XML. To narzędzie koduje i dekoduje oba warianty, z opcjonalnymi delimiterami.

Jak konwertować Base85

  1. 1

    Wybierz wariant

    Ascii85 dla assetów PDF/PostScript; Z85 dla kodu źródłowego i protokołów sieciowych.

  2. 2

    Wklej tekst albo prześlij plik

    Kierunek kodowania przyjmuje surowe bajty; kierunek dekodowania przyjmuje ciąg Base85.

  3. 3

    Koder porcjuje po 4 bajty

    Każdy blok 4-bajtowy staje się 5-znakowym ciągiem Base85. Ostatni blok jest dopełniany i obcinany.

  4. 4

    Skopiuj wynik

    Ascii85 może być opcjonalnie owinięty delimiterami `<~` i `~>`; Z85 bez delimiterów.

Porównanie narzutu rozmiaru

Kodowanie Znaki na 4 bajty Narzut względem binarnego
Hex 8 +100%
Base64 5.33 (zaokrąglane w górę do 8 z paddingiem) +37%
Base85 5 +25%
Surowe binarne 4 0

Zatem 1 MB danych binarnych staje się 1.25 MB w Base85, 1.33 MB w Base64 i 2 MB w hex.

Alfabet Ascii85 vs Z85

Ascii85 (RFC 1924 / Adobe): znaki od ! do u (33-117 w ASCII), plus z jako skrót dla 4 bajtów zerowych. Używany w strumieniach PostScript i PDF, owijany jako <~...~>.

Z85 (ZeroMQ): podzbiór unikający znaków cudzysłowu i escape:

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

Bezpieczny do osadzania w JSON, XML, stringach C i kodzie źródłowym bez escapowania.

Jak działa matematyka

Każde 4 bajty są czytane jako 32-bitowa liczba całkowita big-endian N. Pięć znaków wyjściowych to cyfry N w podstawie 85, od najbardziej znaczącej. 85^5 = 4 437 053 125, czyli więcej niż 2^32, więc 4 bajty zawsze mieszczą się w 5 znakach.

Kiedy Ascii85 ma znaczenie

Otwórz dowolny PDF w edytorze tekstu i wyszukaj ASCII85Decode — Adobe używa go jako filtra dla osadzonych obrazów i fontów, które muszą przetrwać transport 7-bitowy (stare systemy w stylu faksu). Z85 jest szeroko używany w kluczach uwierzytelniania ZeroMQ CURVE.

Przypadki szczególne

  • Całkowicie zerowy blok 4-bajtowy — Ascii85 koduje go jako pojedynczy znak z zamiast !!!!!.
  • Blok 4-bajtowy z samych spacji — niektóre warianty używają y dla czterech spacji, inne nie.
  • Ostatni blok częściowy — dopełniany bajtami zerowymi, a odpowiadająca liczba znaków wyjściowych jest obcinana na końcu.

Najczęściej zadawane pytania

Mniejsze wyjście, tak. Uniwersalna zgodność, nie. Base85 zawiera znaki takie jak <, >, &, " (w Ascii85), które trzeba escapować w XML, JSON i URL-ach. Z85 tego unika, ale większość narzędzi natywnie mówi Base64.

Ascii85, jeśli pracujesz z plikami PostScript albo PDF. Z85 do kodu źródłowego, plików konfiguracyjnych i protokołów sieciowych. Kodowanie IPv6 z RFC 1924 to inne przypisanie tych samych 85 znaków i jest rzadko używane w praktyce.

Nie. Używają różnych alfabetów. Dekodowanie Ascii85 tabelą Z85 wyprodukuje śmieci. Wybierz jeden wariant przed kodowaniem i trzymaj się go.

Dla Adobe Ascii85 w strumieniach PDF albo PostScript tak — oznaczają zakodowany region. Do samodzielnego użycia i całego wyjścia Z85 delimitery nie są potrzebne.

Powiązane narzędzia