0

Wynik dekodowania

Ascii85

Wynik kodowania

Ascii85
Wariant

O Ascii85

Ascii85 to kodowanie binarne na tekst, używające 7-bitowych drukowalnych znaków ASCII. Znane również jako Base85.

W Ascii85 dane są dzielone na bloki 4-bajtowe, które są następnie konwertowane na 5 znaków ASCII.

Istnieje wiele wariantów Ascii85. DenCode obsługuje następujące trzy rodzaje. Oryginałem jest btoa, po którym nastąpiły Adobe i Z85.

Opis
Z85Używany w ZeroMQ. Zestaw znaków dobrano tak, aby uniknąć znaków wymagających ucieczki, takich jak „\" (backslash) czy „'” (apostrof).
AdobeUżywany w PostScript i PDF (Portable Document Format) firmy Adobe do kodowania obrazów i innych danych. Ograniczony znacznikami „<~” i „~>”.
btoaFormat polecenia btoa w systemach UNIX. Dawniej używany do wymiany danych binarnych, obecnie mniej popularny. Ograniczony liniami „xbtoa Begin” i „xbtoa End”.

Znaki używane w Ascii85 są następujące. 4 bajty są traktowane jako liczba całkowita bez znaku (big-endian), która jest następnie zapisywana w systemie o podstawie 85 (5 cyfr). Na podstawie tego, przy użyciu poniższych znaków ASCII, uzyskuje się wynik konwersji.

Znaki ASCII
Z850123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#
Adobe!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
btoa!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
(Oryginalnie od „ ” (spacji) do „t”, ale ze względu na usuwanie spacji końcowych przez niektóre programy pocztowe, zmieniono na zakres od „!” do „u”).

Na przykład, konwersja „Hello” na Ascii85 wygląda następująco:

1. Podział na bloki 4-bajtowe. Jeśli blok ma mniej niż 4 bajty, dopełnia się go zerami (00).

48656C6C(16) 6F000000(16)  (Hell o)

2. Każdy 4-bajtowy blok jest traktowany jako liczba całkowita bez znaku (big-endian), a następnie konwertowany na 5 cyfr w systemie o podstawie 85.

48656C6C(16)
= 1214606444(10)
= 23 * 854 + 22 * 853 + 66 * 852 + 52 * 85 + 49
6F000000(16)
= 1862270976(10)
= 35 * 854 + 57 * 853 + 33 * 852 + 65 * 85 + 26

3. Konwersja cyfr systemu 85 na znaki ASCII. Jeśli dodano dopełnienie (padding), w przypadku Adobe/Z85 odpowiednie znaki są usuwane.

23226652493557336526
Z85nm=QNzV
Adobe87cURDZ
btoa87cURDZBb;

4. Połączenie wszystkich znaków daje wynik Ascii85. Adobe używa znaczników „<~” i „~>” oraz łamie wiersze co 80 znaków. btoa używa „xbtoa Begin” i „xbtoa End” (zawierając długość danych i sumę kontrolną) oraz łamie wiersze co 78 znaków.

Wynik konwersji
Z85nm=QNzV
Adobe<~87cURDZ~>
btoaxbtoa Begin
87cURDZBb;
xbtoa End N 5 5 E 42 S 1f9 R a9f

Istnieją również pewne skróty:

Skrót
Z85Brak
Adobe00000000(16) -> z
btoa00000000(16) -> z
20202020(16) -> y (od btoa v4.2)