Xxencode i xxdecode

Zakoduj tekst, bajty szesnastkowe lub pliki w formacie xxencode albo zdekoduj bloki xxencode z powrotem do oryginalnych danych. Alfabet zawiera tylko litery, cyfry, plus i minus.

Działa w całości w przeglądarce. Nic nie jest wysyłane.

Jak używać

  1. Wybierz „Koduj”, aby utworzyć blok xxencode, lub „Dekoduj”, aby zamienić go z powrotem na dane.
  2. Pozostaw włączoną opcję „Wiersze begin / end” i podaj nazwę w polu „Nazwa pliku”, aby otrzymać kompletny blok, albo wyłącz tę opcję, aby otrzymać tylko wiersze danych.
  3. Wpisz lub wklej dane wejściowe albo otwórz plik. Wynik aktualizuje się na bieżąco podczas pisania.
  4. Skopiuj wynik lub go pobierz. Przy dekodowaniu ustaw „Wyjście jako” na „Hex” lub pobierz plik, jeśli dane nie są tekstem.

Czym jest xxencode?

Xxencode zachowuje strukturę uuencode i zmienia tylko znaki. Każde 3 bajty nadal dają cztery wartości 6-bitowe, wiersze danych nadal zawierają do 45 bajtów poprzedzonych znakiem długości, a blok nadal znajduje się między wierszem begin 644 name a wierszem end.

64 wartości są przypisane kolejno do znaków + i -, cyfr 0-9, wielkich liter A-Z i małych liter a-z. Znak długości korzysta z tej samej tabeli, więc pełny 45-bajtowy wiersz zaczyna się od h, a pusty wiersz przed end to pojedynczy znak +. Ponieważ układ jest identyczny, wynik ma taki sam rozmiar jak w uuencode: jest o ok. 38% większy od danych wejściowych, licząc znaki długości i znaki końca wiersza.

Dlaczego powstał xxencode

Wynik uuencode jest pełen znaków interpunkcyjnych, takich jak [, ], \, ^ i !. Komputery mainframe IBM używają EBCDIC zamiast ASCII, a te znaki zajmują różne pozycje w różnych stronach kodowych EBCDIC. Gdy poczta przechodziła przez bramy między sieciami ASCII i EBCDIC, takie znaki mogły zostać błędnie przekształcone, co uszkadzało plik.

Litery, cyfry, plus i minus są takie same we wszystkich stronach kodowych EBCDIC, więc tekst xxencode konwertuje się poprawnie w obu kierunkach. Później ten sam cel osiągnął MIME: Base64 również używa tylko liter, cyfr i kilku symboli, które są identyczne w ASCII i EBCDIC. Xxencode nigdy nie stał się tak popularny jak uuencode, a ostatecznie oba zastąpił Base64.

Uuencode i xxencode w porównaniu

UuencodeXxencode
ZnakiASCII od 32 do 95, grawis zamiast zera+ - 0-9 A-Z a-z
Początek pełnego wiersza 45-bajtowegoMh
Ostatni wiersz przed end`+
Bezpieczny przy przejściu przez bramy EBCDICNieTak

Specyfikacja

Alfabet+ - 0-9 A-Z a-z
Rozmiar wynikuOk. 137% wraz z prefiksami wierszy
DopełnienieWiersze do 45 bajtów
Standardxxencode
Rozróżnia wielkość literTak

Przykłady

Wejście (UTF-8)Wyjście
Hello, World!begin 644 data.bin BG4JgP4wg63RjQalY6E++ + end
Base64.isbegin 644 data.bin 7Ea3nNHMo9aZn + end
你好begin 644 data.bin 4t9qUtOKx + end

Najczęściej zadawane pytania

Jak odróżnić uuencode od xxencode?
Spójrz na wiersze danych. Wiersze xxencode zawierają tylko litery, cyfry, plus i minus, a pełne wiersze zaczynają się od h. Wiersze uuencode zawierają znaki interpunkcyjne, a pełne wiersze zaczynają się od M. Jeśli dekodowanie tutaj kończy się błędem nieprawidłowego znaku, skorzystaj ze strony uuencode.
Czy narzędzie zapisuje wiersze begin i end?
Tak, domyślnie zapisuje begin 644 z podaną nazwą pliku oraz wiersze zamykające. Wyłącz tę opcję, jeśli potrzebujesz tylko zakodowanych wierszy danych.
Czy można zdekodować blok bez wiersza begin?

Tak. Bez wiersza begin każdy niepusty wiersz jest dekodowany jako dane. Jeśli taki wiersz występuje, dekodowanie zaczyna się po nim i kończy na wierszu end, więc otaczający tekst jest ignorowany.

Czy xxencode jest jeszcze używany?
Rzadko. Spotyka się go głównie w starych archiwach poczty i grup dyskusyjnych. Do nowych danych lepiej nadaje się Base64, który jest obsługiwany niemal wszędzie i równie bezpieczny w kanałach przenoszących wyłącznie tekst.