Jak używać
- Wpisz lub wklej tekst w polu „Wejście”.
- Wszystkie kodowania aktualizują się na bieżąco podczas pisania: binarny, ósemkowy, dziesiętny, hex, warianty Base32, kodowania od Base36 do Base91 oraz uuencode i xxencode.
- Porównaj wyniki, aby sprawdzić, który jest najkrótszy albo zawiera wyłącznie dopuszczalne w danym zastosowaniu znaki.
- Kliknij „Kopiuj” obok potrzebnego wyniku.
Wszystkie kodowania z jednych danych wejściowych
Każde kodowanie na tej stronie zamienia te same bajty na inny zestaw znaków. Zestawienie ich obok siebie to najszybszy sposób, aby wybrać kodowanie do projektu, rozpoznać ciąg znaleziony w logu lub pliku konfiguracyjnym albo poznać różnice między formatami. Tekst jest kodowany jako bajty UTF-8, więc litera ze znakiem diakrytycznym, np. ą lub ł, zajmuje dwa bajty, a znak chiński trzy. Wszystko działa w przeglądarce.
- Liczba dla każdego bajtu. Zapis binarny, ósemkowy i dziesiętny przedstawia każdy bajt osobno. Łatwo go odczytać, ale jest długi.
- Grupy bitów. Hex, Base32 (wraz z Base32hex, Crockford i z-base-32), Base64 i Base64URL przypisują każdemu znakowi stałą liczbę bitów, więc długość wyniku zależy wyłącznie od długości danych wejściowych.
- Duże liczby. Base36, Base58 i Base62 traktują całe wejście jako jedną dużą liczbę całkowitą. W zależności od wartości długość może się różnić o jeden znak, a wiodące bajty zerowe są zachowywane jako znaki na początku wyniku.
- Bloki. Base45 zamienia 2 bajty na 3 znaki, Ascii85, Z85 i Base85 zamieniają 4 bajty na 5 znaków, a Base91 mieści 13 lub 14 bitów w każdej parze znaków.
- Wiersze. uuencode i xxencode to starsze formaty poczty elektronicznej i Usenetu, które zapisują dane w wierszach, a każdy wiersz zaczyna się znakiem określającym jego długość.
Porównanie rozmiaru wyniku
Ile znaków potrzebuje każde kodowanie na jeden bajt wejściowy i jak długa staje się 32-bajtowa wartość, np. skrót SHA-256 lub klucz publiczny Ed25519:
| Kodowanie | Znaki na bajt | Długość dla 32 bajtów |
|---|---|---|
| Base16 (hex) | 2,0 | 64 |
| Base32 | 1,6 | 56 (52 bez dopełnienia) |
| Base36 | ok. 1,55 | 49 lub 50 |
| Base45 | 1,5 | 48 |
| Base58 | ok. 1,37 | 43 lub 44 |
| Base62 | ok. 1,34 | 42 lub 43 |
| Base64 | ok. 1,33 | 44 (43 bez dopełnienia) |
| Base85 | 1,25 | 40 |
| Base91 | ok. 1,23 | 39 lub 40 |
Przejście z hex na Base64 skraca zapis o jedną trzecią. Dalsze przejście z Base64 na Base91 daje już tylko ok. 8% oszczędności.
Które kodowanie wybrać
Najkrótszy wynik nie zawsze jest najlepszy. Ascii85 może zawierać cudzysłowy i ukośniki odwrotne, a Base91 cudzysłowy podwójne, więc w JSON, HTML lub poleceniach powłoki oba mogą wymagać użycia sekwencji ucieczki. Warto zastanowić się, gdzie ciąg ma trafić:
- Adresy URL i nazwy plików: Base64URL, Base58 lub Base62.
- Czytanie na głos lub ręczne wpisywanie: Crockford Base32 lub Base58, które pomijają podobnie wyglądające znaki.
- Systemy nierozróżniające wielkości liter: hex, Base32 lub Base36.
- Kody QR: Base45, który używa wyłącznie znaków trybu alfanumerycznego QR.
- Zwarty tekst w PDF, Git lub ZeroMQ: Ascii85, Base85 lub Z85.
- Maksymalna zgodność: Base64, obsługiwany przez niemal każdy język programowania i platformę.
Najczęściej zadawane pytania
Które kodowanie daje najkrótszy wynik?
Spośród kodowań na tej stronie najbardziej zwarty jest Base91 (ok. 1,23 znaku na bajt), a za nim Ascii85, Z85 i Base85 (1,25). Base64 potrzebuje ok. 1,33 znaku, ale jest obsługiwany znacznie szerzej, dlatego zwykle jest wyborem domyślnym.
Dlaczego wyniki Base58 i Base62 mają różną długość dla danych tego samego rozmiaru?
Oba kodowania przeliczają całe wejście jako jedną dużą liczbę, więc długość wyniku zależy od jej wartości, a nie tylko od rozmiaru. Każdy wiodący bajt zerowy dodaje też jeden znak na początku. Hex, Base32 i Base64 dla tej samej liczby bajtów zawsze dają wynik tej samej długości.
Czy na tej stronie można dekodować ciągi?
Dlaczego wynik binarny jest tak długi?
Zapis binarny wymaga 8 cyfr na każdy bajt oraz separatorów, więc jest co najmniej cztery razy dłuższy niż hex. Służy do oglądania poszczególnych bitów, a nie do przechowywania lub przesyłania danych.
Czy mój tekst jest wysyłany na serwer?
Nie. Wszystkie kodowania są obliczane przez JavaScript w przeglądarce, a tekst nigdy nie opuszcza urządzenia.