Text in Hex

Ein Speicherabbild lesen, prüfen, was ein Protokoll tatsächlich auf die Leitung gelegt hat, eine CTF-Aufgabe auseinandernehmen: Früher oder später brauchen Sie die Bytes hinter einer Zeichenkette. Fügen Sie Text ein, und dieser Konverter gibt ihn Byte für Byte in Hexadezimal zurück, wahlweise mit Leerzeichen wie in einem Hexdump (48 65 6c 6c 6f) oder in einem Stück (48656c6c6f). Mit dem anderen Modus geht es umgekehrt: Eingefügtes Hex wird wieder zu lesbarem Text.

So arbeitet der Konverter

  1. 1

    Richtung wählen

    Text in Hex kodiert Ihre Eingabe. Hex in Text macht daraus wieder Zeichen.

  2. 2

    Trennzeichen wählen

    Beim Kodieren entweder ein einzelnes Leerzeichen zwischen den Bytes oder gar keins. Mehr Optionen gibt es nicht.

  3. 3

    Eingabe einfügen

    Text wird als UTF-8 gelesen. Hex darf mit 0x- oder \x-Präfixen, Kommas, Leerzeichen oder Zeilenumbrüchen kommen, das wird für Sie entfernt.

  4. 4

    Umwandeln und kopieren

    Das Ergebnis erscheint darunter samt Kopierschaltfläche. Es wird nichts heruntergeladen.

Warum Hex und nicht Dezimal

Eine Hexziffer deckt genau 4 Bit ab, zwei Hexziffern also genau ein Byte, ausnahmslos. Dezimal zwingt zum Rechnen, um zu wissen, ob ein Wert noch hineinpasst (liegt 128 im Bereich? und 256?), während Hex es zeigt: 00 ist das kleinste Byte, ff das größte, und jedes Byte dazwischen ist zwei Zeichen breit. Diese Bündigkeit ist der Grund, warum Speicherabbilder, Paketmitschnitte, Dateisignaturen und Farbcodes in Hex notiert werden.

Was dieser Konverter tatsächlich ausgibt

  • Immer klein geschrieben. Der Kodierer schreibt 6c, nie 6C. Hex unterscheidet keine Groß- und Kleinschreibung, es geht also nichts verloren. Braucht Ihr Zielformat Großbuchstaben, schicken Sie die Ausgabe durch einen Umwandler für Groß- und Kleinschreibung.
  • Immer zwei Ziffern pro Byte. Ein Tabulator ist 09, nicht 9, damit die Bytegrenzen zählbar bleiben.
  • Leerzeichen oder nichts. Das sind die einzigen beiden Trennzeichen. Beim Kodieren gibt es kein 0x- oder \x-Präfix, das ergänzen Sie bei Bedarf für C- oder Python-Escapes im Editor.
  • Durchgehend UTF-8. Text wird in Bytes gemessen, nicht in Zeichen.

Hex und Unicode

H belegt in UTF-8 ein Byte und wird deshalb zu 48. Alles außerhalb des reinen ASCII belegt mehr:

Zeichen UTF-8-Hex Bytes
A 41 1
é c3 a9 2
€ e2 82 ac 3
🚀 f0 9f 9a 80 4

Hello wird also zu 48 65 6c 6c 6f, fünf Zeichen und fünf Bytes, während café zu 63 61 66 c3 a9 wird: vier Zeichen, aber fünf Bytes, weil das é zwei braucht. Genauso verhalten sich die Umlaute, ä ist c3 a4 und das ß ist c3 9f. Wenn eine kurze Zeichenkette mehr Hexpaare ergibt als erwartet, liegt es meistens daran.

Was der Dekoder akzeptiert

Fügen Sie eines davon ein und Sie bekommen Hello zurück:

  • 48 65 6c 6c 6f, im Hexdump-Stil
  • 48656c6c6f, roh und ohne Trennzeichen
  • 0x48656c6c6f, im Stil eines Ganzzahlliterals
  • \x48\x65\x6c\x6c\x6f, C- und Python-Escapes
  • 48,65,6C,6C,6F, mit Kommas und in beliebiger Mischung aus Groß- und Kleinbuchstaben

Präfixe, Kommas, Leerzeichen, Tabulatoren und Zeilenumbrüche werden vor dem Dekodieren entfernt. Alles andere nicht: Ein Bindestrich in 48-65, ein # vor einem Farbcode oder ein Buchstabe hinter dem f bricht den Vorgang ab, ebenso eine ungerade Anzahl Ziffern, denn ein halbes Byte ergibt kein Zeichen. In diesen Fällen gibt das Werkzeug lieber gar nichts aus, als ein halbes Ergebnis zu raten. Bleibt das Ausgabefeld leer, ist das der Grund, nach dem Sie suchen sollten.

Hex-Farben nutzen dieselbe Notation, aber nicht denselben Inhalt

#ff8800 verwendet dasselbe Zahlensystem zur Basis 16, doch diese drei Bytes beschreiben die Kanäle Rot, Grün und Blau, keine Zeichen. Entfernen Sie das # und dekodieren Sie es hier, erhalten Sie drei rohe Bytes, die kein lesbarer Text sind. Dafür ist ein Farbwähler das richtige Werkzeug.

Häufig gestellte Fragen

Ja. Hexadezimal und Base16 sind zwei Namen für dasselbe System: sechzehn Ziffern (0 bis 9 und a bis f), jede mit 4 Bit.

Aus diesem Werkzeug nicht. Der Kodierer schreibt immer klein. Da Hex die Groß- und Kleinschreibung nicht unterscheidet, sind 4f und 4F dasselbe Byte, schicken Sie das Ergebnis also durch einen beliebigen Umwandler für Groß- und Kleinschreibung, wenn Ihr Format es verlangt. Der Dekoder liest beide Formen anstandslos.

Der Dekoder akzeptiert nur die Ziffern 0 bis 9 und a bis f in gerader Anzahl, nachdem er 0x- und \x-Präfixe, Kommas und Leerraum entfernt hat. Ein Bindestrich, ein #, ein Buchstabe hinter dem f oder eine fehlende Ziffer machen die Eingabe ungültig, und das Werkzeug zieht ein leeres Ergebnis einem falschen vor. Zählen Sie die Ziffern und suchen Sie nach versprengten Satzzeichen.

Die meisten Emoji liegen in den Zusatzebenen von Unicode, die UTF-8 in vier Bytes ablegt. Reine ASCII-Zeichen bleiben bei einem Byte, deshalb ergibt englischer Text ein Paar pro Zeichen und deutscher Text mit Umlauten nicht.

Nein. Das hier ist ein Textfeld, es verarbeitet also, was Sie tippen oder einfügen. Für binäre Daten ist Base64 kompakter und einfacher zu übertragen.

Ja. Die Umwandlung läuft auf unserem Server, Ihre Eingabe reist also mit der Anfrage mit und das Ergebnis kommt zurück. Wir protokollieren nur die Aktion und die gewählten Optionen, nie den Text selbst, und der Text wird nach der Antwort nicht gespeichert. Für wirklich vertrauliches Material nehmen Sie einen Konverter, der offline auf Ihrem eigenen Rechner läuft.

Verwandte Tools

Tool in anderen Sprachen verfügbar