Koder i dekoder hex (Base16)

Zamień tekst, pliki lub surowe bajty na zapis szesnastkowy i z powrotem. Wybierz wielkość liter, separator oraz prefiks 0x lub \x; dekoder sam porządkuje popularne formaty zapisu hex.

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

Jak używać

  1. Wybierz „Koduj”, aby zamienić tekst na hex, lub „Dekoduj”, aby zamienić hex z powrotem na tekst.
  2. Wpisz lub wklej dane wejściowe albo otwórz plik, aby zobaczyć jego bajty w zapisie szesnastkowym.
  3. Ustaw opcje: „Wielkie litery”, separator („Brak”, „Spacja” lub „Dwukropek”) oraz prefiks („Brak”, 0x lub \x).
  4. Skopiuj wynik lub pobierz go jako plik.

Czym jest system szesnastkowy (Base16)?

System szesnastkowy używa szesnastu symboli: cyfr od 0 do 9 i liter od A do F. Jedna cyfra szesnastkowa przechowuje cztery bity, więc każdy bajt zapisuje się dokładnie dwiema cyframi, od 00 do FF. Wynik jest dwa razy większy niż dane wejściowe, a więc większy niż w przypadku Base64 czy Base32, ale granice bajtów pozostają widoczne. Dlatego właśnie debugery, edytory szesnastkowe i narzędzia sieciowe wyświetlają dane w ten sposób.

RFC 4648 standaryzuje to kodowanie jako Base16, z alfabetem złożonym z wielkich liter i bez dopełnienia. W praktyce małe litery są równie popularne, a dekodery, w tym ten, akceptują obie formy.

Gdzie używa się zapisu szesnastkowego

  • Skróty i klucze. Skrót SHA-256 ma 32 bajty, zapisywane jako 64 cyfry szesnastkowe. Klucze kryptograficzne, identyfikatory UUID i sumy kontrolne również są zwykle wyświetlane w hex.
  • Adresy sprzętowe. Adresy MAC to sześć bajtów w zapisie szesnastkowym, zwykle oddzielonych dwukropkami. Separator „Dwukropek” daje właśnie taki format.
  • Sekwencje ucieczki. Ciągi znaków w C, Pythonie i JavaScripcie akceptują \x z dwiema cyframi szesnastkowymi jako pojedynczy bajt, i dokładnie to zapisuje opcja prefiksu \x.
  • Formaty internetowe. Kolory CSS, takie jak #FF8800, to trzy bajty w zapisie szesnastkowym, a kodowanie procentowe w adresach URL zapisuje bajty jako % i dwie cyfry szesnastkowe.

Dekodowanie hex na tekst

Dekoder jest wyrozumiały, jeśli chodzi o formatowanie. Akceptuje wielkie i małe litery, ignoruje spacje, podziały wierszy, przecinki, dwukropki, średniki i łączniki oraz usuwa prefiksy 0x, \x, % i &#x. Wynik polecenia xxd -p, adresy MAC, identyfikatory UUID, listy wartości 0x rozdzielonych przecinkami, sekwencje %XX i szesnastkowe encje HTML można wklejać bez zmian. Każdy bajt wymaga dwóch cyfr, więc nieparzysta liczba cyfr jest zgłaszana jako błąd. Bajty są wyświetlane jako tekst w wybranym kodowaniu tekstu.

Aby zamienić hex na inne kodowanie bez pośrednictwa tekstu, użyj narzędzia Hex na Base64 lub Base64 na Hex.

Zapis szesnastkowy w kodzie

# Python
'Hi'.encode().hex()                 # '4869'
bytes.fromhex('4869').decode()      # 'Hi'

// Node.js
Buffer.from('Hi').toString('hex')             // '4869'
Buffer.from('4869', 'hex').toString('utf8')   // 'Hi'

# Shell
printf 'Hi' | xxd -p                # 4869

Specyfikacja

Alfabet0-9 A-F
Rozmiar wyniku2 znaki na bajt (200%)
DopełnienieBrak
StandardRFC 4648, sekcja 8
Rozróżnia wielkość literNie

Przykłady

Wejście (UTF-8)Wyjście
Hello, World!48656c6c6f2c20576f726c6421
Base64.is4261736536342e6973
你好e4bda0e5a5bd

Najczęściej zadawane pytania

Jak zamienić hex na tekst?

Przełącz na „Dekoduj” i wklej ciąg szesnastkowy. Spacje, dwukropki oraz prefiksy 0x i \x są usuwane automatycznie, a bajty są wyświetlane jako tekst UTF-8, chyba że w polu „Kodowanie tekstu” wybrano inne kodowanie.

Czy hex zapisywać wielkimi, czy małymi literami?

Obie formy oznaczają te same bajty. RFC 4648 używa wielkich liter, natomiast wiele języków programowania wypisuje małe. Włącz opcję „Wielkie litery”, jeśli system docelowy ich oczekuje; dekoder akceptuje obie formy.

Dlaczego zapis szesnastkowy jest dwa razy dłuższy niż oryginał?
Każdy bajt staje się dwoma znakami, co oznacza wzrost o 100%. Base64 dodaje tylko około 33%. Jeśli liczy się rozmiar, przekonwertuj bajty za pomocą narzędzia Hex na Base64.
Czy to to samo co zamiana liczby na system szesnastkowy?
Nie do końca. To narzędzie koduje ciąg bajtów, na przykład bajty tekstu. Aby przekonwertować pojedynczą liczbę całkowitą, np. 255 na FF, użyj konwertera systemów liczbowych.