Jak używać
- Wybierz „Koduj”, aby zamienić tekst na Base36, lub „Dekoduj”, aby zamienić Base36 z powrotem na tekst.
- Wpisz lub wklej dane wejściowe albo otwórz niewielki plik (do około 20 KB).
- Włącz „Wielkie litery”, jeśli wynik ma zawierać wielkie litery.
- Skopiuj wynik lub pobierz go jako plik.
Czym jest Base36?
Base36 zapisuje dane za pomocą dziesięciu cyfr i 26 liter alfabetu łacińskiego, czyli znaków 0-9, po których następują a-z. To największy alfabet, jaki można zbudować z cyfr i liter bez rozróżniania ich wielkości, dlatego ciągi Base36 bez szkody przechodzą przez systemy, które zmieniają lub ignorują wielkość liter. Każdy znak niesie około 5,17 bita, więc wynik jest mniej więcej 1,55 raza większy niż dane wejściowe, czyli nieco krótszy niż w Base32.
Ponieważ 36 nie jest potęgą dwójki, bajtów nie da się po prostu pociąć na grupy bitów. Zamiast tego narzędzie odczytuje całe dane wejściowe jako jedną dużą liczbę bez znaku i zamienia ją na system o podstawie 36, tą samą metodą, której używa Base58. Liczba straciłaby wiodące bajty zerowe, dlatego każdy z nich jest zapisywany jako wiodące 0 i przywracany podczas dekodowania. Ta arytmetyka staje się powolna przy dużych danych, więc narzędzie przyjmuje do około 20 KB.
Gdzie używa się Base36
- Krótkie identyfikatory. Skracacze adresów URL, numery zamówień i kody zgłoszeń często przedstawiają liczbowy identyfikator z bazy danych w systemie o podstawie 36. Na przykład Reddit używa podstawy 36 dla identyfikatorów postów i komentarzy.
- Miejsca bez rozróżniania wielkości liter. Nazwy DNS i niektóre systemy plików ignorują wielkość liter. Z tego powodu IPFS używa formy Base36 niektórych identyfikatorów w adresach bram opartych na subdomenach.
- Liczby w kodzie. Podstawa 36 to najwyższa podstawa, którą większość języków programowania obsługuje natywnie przy konwersji liczb całkowitych.
Jeśli wielkość liter jest zachowywana i potrzebny jest możliwie najkrótszy ciąg alfanumeryczny, bardziej zwarty jest Base62.
Liczby Base36 w kodzie
Ta strona koduje bajty. Aby przekonwertować liczbę całkowitą, użyj wbudowanych funkcji swojego języka lub konwertera systemów liczbowych:
// JavaScript
(1000000).toString(36) // 'lfls'
parseInt('lfls', 36) // 1000000
123456789012345678901234567890n.toString(36) // BigInt dla dużych wartości
# Python
int('lfls', 36) # 1000000
# brak wbudowanej funkcji dla odwrotnego kierunku
parseInt traci precyzję powyżej Number.MAX_SAFE_INTEGER; w przypadku większych wartości trzeba samodzielnie składać wynik z kolejnych cyfr w typie BigInt.
Specyfikacja
| Alfabet | 0-9 a-z |
|---|---|
| Rozmiar wyniku | Ok. 155% (arytmetyka dużych liczb) |
| Dopełnienie | Brak |
| Standard | Brak formalnego standardu |
| Rozróżnia wielkość liter | Nie |
Przykłady
| Wejście (UTF-8) | Wyjście |
|---|---|
Hello, World! | fg3h7vqw7een6jwwnzmp |
Base64.is | 76f8bz4veeatf7 |
你好 | 2h5exfqm65 |
Najczęściej zadawane pytania
Czy Base36 rozróżnia wielkość liter?
Nie. Wynik jest domyślnie zapisywany małymi literami, a opcja „Wielkie litery” przełącza go na wielkie. Dekoder akceptuje obie formy.
Dlaczego inne narzędzie daje inny wynik Base36?
Base36 nie ma formalnego standardu. Niektóre narzędzia kodują liczbę, inne bajty, a do tego różnie traktują wiodące bajty zerowe. To narzędzie koduje bajty wejściowe jako jedną dużą liczbę i zapisuje każdy wiodący bajt zerowy jako 0.