Jak używać
- Wybierz „Koduj”, aby zamienić tekst na hex, lub „Dekoduj”, aby zamienić hex z powrotem na tekst.
- Wpisz lub wklej dane wejściowe albo otwórz plik, aby zobaczyć jego bajty w zapisie szesnastkowym.
- Ustaw opcje: „Wielkie litery”, separator („Brak”, „Spacja” lub „Dwukropek”) oraz prefiks („Brak”, 0x lub \x).
- 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ą
\xz 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
| Alfabet | 0-9 A-F |
|---|---|
| Rozmiar wyniku | 2 znaki na bajt (200%) |
| Dopełnienie | Brak |
| Standard | RFC 4648, sekcja 8 |
| Rozróżnia wielkość liter | Nie |
Przykłady
| Wejście (UTF-8) | Wyjście |
|---|---|
Hello, World! | 48656c6c6f2c20576f726c6421 |
Base64.is | 4261736536342e6973 |
你好 | 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.