Wie die Hex-Kodierung funktioniert
Jedes Zeichen auf einer Seite wird als ein oder mehrere Bytes gespeichert. Hex-Kodierung schreibt diese Bytes zur Basis 16 um, zwei Zeichen pro Byte, sodass der Bytestrom ohne Spezialwerkzeug lesbar ist.
- Text in Bytes kodieren. Der UTF-8-Modus übergibt die Eingabe an
new TextEncoder().encode(text), das einUint8Arraymit Bytewerten zurückgibt. Der Latin-1-Modus nimmt die niedrigen acht Bits jeder Code-Einheit übercharCodeAt(0) & 0xFF, was der Konvertierung der alten ISO-8859-1-Codecs entspricht. - Jedes Byte als zwei Hex-Ziffern ausgeben. Jedes Byte wird über
byte.toString(16).padStart(2, "0")auf zwei Hex-Ziffern abgebildet. Der Schreibweise-Schalter wählt Großbuchstaben (A–F) oder Kleinbuchstaben (a–f) für die Ausgabe. - Gruppierung und Präfix anwenden. Die Gruppierung fügt zwischen Bytes ein Trennzeichen ein: ein Leerzeichen, einen Bindestrich oder alle vier Bytes ein Leerzeichen. Das 0x-Präfix kann dem gesamten String vorangestellt werden (keine Gruppierung) oder pro Byte (Leerzeichen-Gruppierung), entsprechend den Konventionen von C-Arrays und Binär-Diff-Tools.
- Umgekehrt dekodieren. Der Hex-→-Text-Modus entfernt alle Leerzeichen, Bindestriche und
0x-Präfixe aus der Eingabe, validiert die verbleibenden Zeichen gegen/^[0-9a-fA-F]+$/, verwirft Zeichenketten mit ungerader Länge und baut aus aufeinanderfolgenden Bytepaaren einUint8Arrayauf. Der UTF-8-Modus dekodiert das Array mitnew TextDecoder("utf-8", { fatal: true }); der Latin-1-Modus bildet jedes Byte aufString.fromCharCode(b)ab. - Live-Modus für schnelle Iteration. Der Live-Modus ist standardmässig aktiv. Jeder Tastendruck plant eine um 150 ms verzögerte Neukonvertierung, sodass man einfügen, bearbeiten und das andere Feld aktualisieren sehen kann, ohne auf Konvertieren zu klicken.
Warum einen Hex-Konverter nutzen
- Binäre Protokolle debuggen. Drahtformate wie Modbus, DNP3 und CoAP packen ihre Header in bestimmte Byte-Offsets. Eine aufgezeichnete Rahmensequenz als Hex zu lesen zeigt jedes Feld auf einen Blick, und die gleichen Bytes in ASCII zurückzudrehen enthüllt jede Klartextnutzlast neben der binären Rahmung.
- Embedded-Firmware analysieren. JTAG- und SWD-Sonden melden Speicherinhalte als Hex. Eine Speicherregion in ASCII zu übersetzen findet eingebettete Zeichenketten (Dateipfade, Fehlermeldungen, Herstellersignaturen), die oft genau zeigen, an welcher Stelle der Firmware man sich befindet.
- Paketmitschnitte lesen. Wireshark und tcpdump zeigen beide einen Byte-Bereich, der jedes Paket links als Hex und rechts als ASCII ausgibt. Ein Ausschnitt kann hier konvertiert werden, um einen Hex-Blob aus einem Fehlerbericht zu lesen, ohne ihn in ein Capture-Tool reimportieren zu müssen.
- Byteweise Unterschiede vergleichen. Zwei Binärdateien zu vergleichen läuft oft darauf hinaus, welche Bytes sich geändert haben. Beide Seiten mit einer einheitlichen Gruppierung in Hex zu konvertieren lässt den Diff in einem Texteditor ausrichten, wo ein eingebautes Diff-Tool die geänderten Bytes hervorheben kann.
Typische Anwendungsfälle
Hex-↔-ASCII-Konvertierung taucht in Reverse Engineering, Sicherheitsanalyse und Embedded-Arbeit überall dort auf, wo ein Bytestrom mehr als nur eine Textnutzlast ist.
- Reverse Engineering: Einen Hex-Dump aus einem strings-resistenten Binary nehmen, Läufe heraussuchen, die als druckbares ASCII dekodieren, und diese Zeichenketten als Anker im Disassembly nutzen.
- Netzwerk-Forensik: Eine einzelne Paketnutzlast aus Wireshark als Hex kopieren, hier einfügen und den Text der Anwendungsschicht lesen, ohne den gesamten Mitschnitt exportieren zu müssen.
- Kryptografisches Material: Ein Schlüssel, IV oder HMAC-Tag wird oft als Hex-Zeichenkette geliefert. Die Rückkodierung in Bytes bestätigt, dass die Länge zum Algorithmus passt (16 Bytes für AES-128, 32 für AES-256), bevor er in eine Konfiguration eingetragen wird.
Ein konkretes Beispiel
Text → Hex, UTF-8, Kleinbuchstaben, Leerzeichen-pro-Byte-Gruppierung, Präfix aus wählen. Hi eingeben: die Ausgabe lautet 48 69. Präfix einschalten und Gruppierung auf Keine stellen: dieselbe Eingabe ergibt 0x4869. Das Emoji 😀 als Eingabe einfügen und der UTF-8-Modus gibt f0 9f 98 80 aus — vier Bytes für einen Code-Point, weshalb Emojis die Übertragungsgrösse oft vervielfachen. Zu Hex → Text wechseln und 0x48-65-6C 6C 6F einfügen: der Parser entfernt Präfix, Bindestriche und Leerzeichen und baut Hello wieder auf.
FAQ
Was ist Hex-Kodierung?
Hex-Kodierung (oder Hexadezimalkodierung) schreibt einen Bytestrom zur Basis 16, zwei ASCII-Zeichen pro Byte. Jede Hex-Ziffer deckt vier Bits, also decken zwei Ziffern ein Byte mit acht Bits. Das Alphabet reicht von 0–9 bis A–F (oder a–f); die Schreibweise ist reine Darstellungssache, und Decoder akzeptieren beide. Hex ist der Standardweg, rohe Bytes in Protokollspezifikationen, Debugger-Ausgaben und Kryptoschlüsseln darzustellen, weil es doppelt so kompakt wie Binär ist und die Probleme nicht druckbarer Zeichen vermeidet.
Warum wird mein Emoji zu 4 Bytes in Hex?
UTF-8 ist eine variable Kodierung. ASCII-Zeichen (U+0000 bis U+007F) belegen ein Byte, Latin-1-Ergänzungen zwei, die meisten anderen BMP-Code-Points drei, und Zeichen oberhalb von U+FFFF — darunter die meisten Emojis — vier. Das lachende Gesicht 😀 ist U+1F600 und kodiert zu F0 9F 98 80. Für eine Ansicht mit fester Bytebreite kann auf Latin-1 gewechselt werden — allerdings deckt Latin-1 nur die ersten 256 Code-Points ab, sodass Zeichen ausserhalb dieses Bereichs nicht verlustfrei übertragen werden können.
Wird Latin-1 / ISO-8859-1 unterstützt?
Ja. Die Textkodierungsoption auf Latin-1 (ISO-8859-1) umstellen. Bei der Kodierung werden die niedrigen acht Bits jeder JavaScript-Code-Einheit verwendet (charCodeAt(0) & 0xFF), was der alten Einbyte-Abbildung entspricht. Bei der Dekodierung wird String.fromCharCode(byte) für jedes Byte verwendet. Latin-1 eignet sich, wenn mit Ausgaben älterer Windows-1252- oder Vor-Unicode-Systeme gearbeitet wird, bei denen jedes Byte genau ein Zeichen repräsentiert.
Wird die Konvertierung im Browser durchgeführt?
Ja. Der Konverter verwendet TextEncoder, TextDecoder und einen kleinen Parser als einzelne statische Seite. Es gibt keinen Upload, keinen API-Aufruf und keine Analyse der eingefügten Daten — nur die standardmässigen Seitenaufruf-Metriken, die siteübergreifend erhoben werden. Die gleichen Hex-Bytes, die hier erscheinen, würde auch ein Node-Skript oder eine Lambda-Funktion für dieselbe Eingabe produzieren.
Hex-↔-ASCII-Konvertierung ist eine kleine Aufgabe, die jeder, der Binärprotokolle oder Embedded-Firmware liest, täglich mehrfach erledigt. Sie in einem Browser-Tab zu erledigen, mit denselben nativen Codecs, die Node und V8 bereits mitliefern, hält die Arbeit schnell und den Bytestrom auf dem eigenen Rechner.