Jak używać
- Wybierz „Koduj”, aby zamienić tekst lub bajty na basE91, lub „Dekoduj”, aby zamienić basE91 z powrotem na dane.
- Wpisz lub wklej dane wejściowe albo otwórz plik. W przypadku surowych bajtów ustaw „Wejście jako” na „Hex”.
- Wynik aktualizuje się na bieżąco podczas pisania. Przy dekodowaniu ustaw „Wyjście jako” na „Tekst” lub „Hex”.
- Skopiuj wynik lub pobierz go jako plik.
Czym jest basE91?
basE91 to kodowanie binarno-tekstowe opracowane przez Joachima Henkego. Używa 91 z 95 drukowalnych znaków ASCII: wszystkich z wyjątkiem spacji, apostrofu ', łącznika - i ukośnika wstecznego \.
Nie działa na stałych blokach bajtów. Koder zbiera bity wejściowe w buforze i pobiera je po 13 naraz. Jeśli 13-bitowa wartość jest większa niż 88, zapisuje ją jako dwa znaki. Jeśli wynosi 88 lub mniej, pobiera dodatkowo 14. bit, co nadal się mieści, ponieważ dwa znaki base-91 mogą wyrazić 91 × 91 = 8281 różnych wartości. Każde 13 lub 14 bitów daje więc dokładnie 2 znaki.
W efekcie narzut wynosi najwyżej ok. 23%, a dla danych z długimi ciągami bajtów zerowych spada do ok. 14%. Dane losowe lub skompresowane wypadają blisko górnej granicy.
basE91 na tle innych kodowań
| Kodowanie | Liczba znaków | Rozmiar wyniku |
|---|---|---|
| Hex | 16 | 2 × rozmiar wejścia |
| Base58 | 58 | ok. 1,37 × rozmiar wejścia |
| Base64 | 64 | 1,33 × rozmiar wejścia |
| Base85 / Ascii85 | 85 | 1,25 × rozmiar wejścia |
| basE91 | 91 | od ok. 1,14 do 1,23 × rozmiar wejścia |
Aby porównać rzeczywiste długości wyniku dla własnych danych, wpisz je w narzędziu Wszystkie kodowania.
O czym warto pamiętać
- Znaki ucieczki. Alfabet zawiera cudzysłów
", który w JSON i w większości literałów łańcuchowych trzeba poprzedzić znakiem ucieczki, oraz znaki<,>i&, które w HTML i XML trzeba zastąpić encjami. basE91 nie jest bezpieczny dla URL. - Dekoduj cały ciąg. Ponieważ bity przechodzą przez granice znaków, fragmentu wyciętego ze środka ciągu basE91 nie da się zdekodować samodzielnie.
- Obsługa. basE91 nie jest standardem IETF. Autor publikuje implementacje referencyjne w C i innych językach, a porty istnieją dla większości platform, np. pakiet
base91dla Pythona.
Specyfikacja
| Alfabet | 91 drukowalnych znaków ASCII |
|---|---|
| Rozmiar wyniku | Ok. 123% |
| Dopełnienie | Brak |
| Standard | basE91 (Joachim Henke) |
| Rozróżnia wielkość liter | Tak |
Przykłady
| Wejście (UTF-8) | Wyjście |
|---|---|
Hello, World! | >OwJh>}AQ;r@@Y?F |
Base64.is | xD7gXm^?t#5 |
你好 | I_5k7aPE |
Najczęściej zadawane pytania
Czy basE91 daje krótszy wynik niż Base64?
Tak. Base64 zawsze dodaje 33%, a basE91 najwyżej ok. 23%, a w przypadku danych z wieloma bajtami zerowymi jeszcze mniej. Dla pliku o rozmiarze 1 MB oznacza to oszczędność około 100 KB.
Jakich znaków używa basE91?
A-Z i a-z, cyfr 0-9 oraz symboli !#$%&()*+,./:;<=>?@[]^_`{|}~". Spacja, apostrof, łącznik i ukośnik wsteczny nie są używane.Dlaczego nazwa jest zapisywana jako basE91?
Tak zapisuje ją autor. basE91 i Base91 oznaczają to samo kodowanie, a ta strona stosuje oryginalny algorytm.
Czy białe znaki psują dekodowanie?
Nie. Spacje i znaki końca wiersza nie należą do alfabetu, więc ten dekoder je ignoruje. Zawinięty tekst basE91 można wkleić bezpośrednio.