Koder i dekoder Base36

Zamień tekst, bajty szesnastkowe lub pliki na Base36, alfabet złożony z dziesięciu cyfr i 26 liter, i dekoduj ciągi Base36 z powrotem na bajty. Wynik wielkimi literami jest opcjonalny.

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

Jak używać

  1. Wybierz „Koduj”, aby zamienić tekst na Base36, lub „Dekoduj”, aby zamienić Base36 z powrotem na tekst.
  2. Wpisz lub wklej dane wejściowe albo otwórz niewielki plik (do około 20 KB).
  3. Włącz „Wielkie litery”, jeśli wynik ma zawierać wielkie litery.
  4. 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

Alfabet0-9 a-z
Rozmiar wynikuOk. 155% (arytmetyka dużych liczb)
DopełnienieBrak
StandardBrak formalnego standardu
Rozróżnia wielkość literNie

Przykłady

Wejście (UTF-8)Wyjście
Hello, World!fg3h7vqw7een6jwwnzmp
Base64.is76f8bz4veeatf7
你好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.

Czy jest limit rozmiaru?
Tak, około 20 KB, ponieważ konwersja dużych liczb trwa tym dłużej, im większe są dane wejściowe. Do plików i dużych danych lepiej nadaje się Base32 lub Base64.
Jak zamienić liczbę na Base36?
Użyj konwertera systemów liczbowych, który pokazuje wartość dziesiętną w Base36 i innych systemach. Ta strona traktuje dane wejściowe jako tekst lub bajty, więc wpisanie 100 zakoduje znaki 1, 0 i 0, a nie liczbę sto.