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. To narzędzie implementuje wariant Adobe Ascii85, obecny w plikach PostScript i PDF. Koder zawsze otacza wynik delimiterami <~ i ~>; dekoder przyjmuje dane z nimi lub bez nich.

Jak konwertować Base85 (Ascii85)

  1. 1

    Wybierz kodowanie lub dekodowanie

    Kodowanie zamienia surowe bajty na Ascii85; dekodowanie zamienia ciąg Ascii85 z powrotem na bajty.

  2. 2

    Wklej tekst

    Wklej do pola bajty do zakodowania albo ciąg Ascii85 do zdekodowania.

  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

    Wynik Ascii85 jest otoczony delimiterami `<~` i `~>`. Wklej go ponownie, aby go zdekodować; delimitery są usuwane automatycznie.

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

Ascii85 (Adobe): znaki od ! do u (33-117 w ASCII) plus z jako skrót dla 4 bajtów zerowych. To standardowe kodowanie strumieni PostScript i PDF, owijane jako <~...~>.

Z85 (ZeroMQ) i alfabet RFC 1924 dla IPv6 to inne przypisania tego samego pomysłu 85 znaków. To narzędzie ich nie implementuje, więc ciąg zakodowany w tych wariantach zostałby tu zdekodowany nieprawidłowo.

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). To samo kodowanie występuje w wielu plikach PostScript i w binarnych transportach bezpiecznych dla poczty e-mail.

Przypadki szczególne

  • Całkowicie zerowy blok 4-bajtowy: Ascii85 koduje go jako pojedynczy znak z zamiast !!!!!.
  • Ostatni blok częściowy: jest 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. Ascii85 zawiera znaki takie jak <, >, &, ", które trzeba escapować w XML, JSON i URL-ach. Większość narzędzi natywnie mówi Base64.

W strumieniach PostScript i PDF, gdzie zakodowany region jest oznaczany delimiterami <~ i ~>. Przeglądarki i edytory PDF obsługują to kodowanie automatycznie.

Nie. Implementuje wyłącznie Adobe Ascii85. Z85 (ZeroMQ) i alfabet RFC 1924 dla IPv6 przypisują 85 znaków inaczej, więc ciąg zakodowany w tych wariantach zostałby tu zdekodowany nieprawidłowo.

Oznaczają zakodowany region zgodnie z konwencją Ascii85. Koder zawsze je dodaje, a dekoder usuwa automatycznie, jeśli są obecne. Możesz też wkleić ciąg bez nich.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach