UTILS.
100% w przeglądarce
🔢

Kodowanie i dekodowanie Base62

Konwertuj liczby całkowite lub ciągi bajtów do i z zwartego, bezpiecznego dla URL Base62 (0-9A-Za-z), z obsługą BigInt i wariantem alfabetu GMP, w przeglądarce.

— wynik pojawi się tutaj —

O tym narzędziu

Narzędzie Base62 koduje liczby i ciągi bajtów do zwartego 62-symbolowego alfabetu 0-9A-Za-z i dekoduje je z powrotem. Base62 jest popularne do krótkich identyfikatorów, slugów URL i skróconych linków, ponieważ pozostaje bezpieczne dla URL bez znaków +, / czy =, których używa Base64. Cała konwersja działa lokalnie w Twojej przeglądarce z użyciem JavaScriptowego BigInt, więc dowolnie duże wartości są dokładne i nic nie jest wysyłane.

Tryb liczby całkowitej traktuje dane wejściowe jako liczbę całkowitą o dowolnej precyzji (dziesiętną lub z prefiksem 0x hex): kodowanie wielokrotnie dzieli przez 62 i dopisuje z przodu alphabet[remainder], a dekodowanie oblicza Σ alphabet.indexOf(ch)·62^position. Tryb bajtów traktuje bajty wejściowe (tekst UTF-8 lub hex) jako jedną liczbę big-endian i stosuje tę samą konwersję o podstawie 62, ale zachowuje też wiodące bajty zerowe w stylu Bitcoin-Base58: każdy wiodący bajt 0x00 staje się jednym wiodącym znakiem '0', więc konwersje tam i z powrotem są bezstratne.

Standardowy alfabet porządkuje cyfry, potem wielkie litery, potem małe litery (0-9A-Za-z). Niektóre biblioteki — zwłaszcza te oparte na GMP — porządkują cyfry, małe litery, potem wielkie litery (0-9a-zA-Z), co daje inny wynik dla tej samej wartości; przełącznik alfabetu pozwala dopasować się do tego, którego używa Twój system. Wybierz kierunek, tryb liczby całkowitej lub bajtów, format wejściowy dla bajtów oraz wariant alfabetu.

Najczęściej zadawane pytania

Jaka jest różnica między trybem liczby całkowitej a trybem bajtów?
Tryb liczby całkowitej konwertuje pojedynczą liczbę o dowolnej precyzji (dziesiętną lub 0x-hex) na ciąg Base62 i z powrotem na liczbę dziesiętną. Tryb bajtów konwertuje sekwencję bajtów (z tekstu UTF-8 lub hex) jako liczbę big-endian i zachowuje wiodące bajty zerowe jako wiodące znaki zerowe alfabetu, więc dane binarne konwertują się dokładnie tam i z powrotem.
Dlaczego są dwa alfabety?
Standardowy alfabet to 0-9A-Za-z (wielkie litery przed małymi). Biblioteki oparte na GMP używają 0-9a-zA-Z (małe litery przed wielkimi). Ta sama wartość koduje się inaczej w każdym z nich, więc przełącznik pozwala współpracować z tym porządkiem, którego oczekują Twoje inne narzędzia.
Jak dużą liczbę można obsłużyć?
Dowolnego rozmiaru. Narzędzie używa JavaScriptowego BigInt, więc nie ma limitu precyzji 2^53 — możesz dokładnie kodować i dekodować liczby całkowite oraz ciągi bajtów dowolnej długości, co jest niezbędne dla haszy, UUID-ów i długich identyfikatorów.
Jak obsługiwane są zera wiodące w trybie bajtów?
Każdy wiodący bajt 0x00 jest kodowany jako jeden wiodący znak zerowy alfabetu (jak wiodąca '1' w Base58). Przy dekodowaniu każdy wiodący znak zerowy alfabetu przywraca jeden bajt 0x00, więc zakodowanie, a następnie zdekodowanie zwraca dokładnie oryginalną sekwencję bajtów.

Więcej narzędzi