Tekst naar hex

Een geheugendump lezen, controleren wat een protocol werkelijk over de lijn heeft gestuurd, een CTF-puzzel uit elkaar halen: vroeg of laat heb je de bytes achter een tekenreeks nodig. Plak tekst en deze omzetter geeft hem byte voor byte in hexadecimaal terug, met spaties zoals in een hexdump (48 65 6c 6c 6f) of in één stuk (48656c6c6f). Wissel van modus en het gaat de andere kant op: geplakte hex wordt weer leesbare tekst.

Hoe de omzetter werkt

  1. 1

    Kies een richting

    Tekst naar hex codeert wat je typt. Hex naar tekst maakt er weer tekens van.

  2. 2

    Kies een scheidingsteken

    Bij coderen één spatie tussen de bytes of helemaal niets. Meer keuzes zijn er niet.

  3. 3

    Plak je invoer

    Tekst wordt als UTF-8 gelezen. Hex mag met 0x- of \x-voorvoegsels, komma's, spaties of regeleindes binnenkomen: die worden voor je weggehaald.

  4. 4

    Omzetten en kopiëren

    Het resultaat verschijnt eronder met een kopieerknop. Er wordt niets gedownload.

Waarom hex en niet decimaal

Eén hexcijfer dekt precies 4 bits, dus twee hexcijfers dekken precies één byte, altijd. Decimaal dwingt je tot rekenen om te weten of een waarde er nog in past (zit 128 binnen bereik? en 256?), terwijl hex het laat zien: 00 is de kleinste byte, ff de grootste, en elke byte daartussen is twee tekens breed. Die uitlijning is de reden dat geheugendumps, pakketopnames, bestandssignaturen en kleurcodes in hex worden genoteerd.

Wat deze omzetter werkelijk oplevert

  • Altijd kleine letters. De codeerkant schrijft 6c, nooit 6C. Hex kent geen verschil tussen hoofd- en kleine letters, dus er gaat niets verloren, maar als jouw doelformaat hoofdletters eist, haal het resultaat dan door een omzetter voor hoofdlettergebruik.
  • Altijd twee cijfers per byte. Een tab is 09, niet 9, zodat de bytegrenzen telbaar blijven.
  • Spatie of niets. Dat zijn de enige twee scheidingstekens. Bij het coderen komt er geen 0x- of \x-voorvoegsel bij, dus zet die er zelf in je editor bij als je C- of Python-escapereeksen nodig hebt.
  • Overal UTF-8. Tekst wordt in bytes gemeten, niet in tekens.

Hex en Unicode

H neemt in UTF-8 één byte in beslag en wordt dus 48. Alles buiten kaal ASCII neemt er meer:

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

Hello wordt dus 48 65 6c 6c 6f, vijf tekens en vijf bytes, terwijl café 63 61 66 c3 a9 wordt: vier tekens, maar vijf bytes, omdat de é er twee nodig heeft. Hetzelfde geldt voor de ë (c3 ab) in woorden als reëel. Levert een korte tekenreeks meer hexparen op dan je verwachtte, dan is dat meestal de reden.

Wat de decoder accepteert

Plak een van deze en je krijgt Hello terug:

  • 48 65 6c 6c 6f, in hexdump-stijl
  • 48656c6c6f, kaal en zonder scheidingstekens
  • 0x48656c6c6f, in de stijl van een geheeltallige literal
  • \x48\x65\x6c\x6c\x6f, escapereeksen uit C en Python
  • 48,65,6C,6C,6F, met komma’s en in elke mengeling van hoofd- en kleine letters

Voorvoegsels, komma’s, spaties, tabs en regeleindes worden vóór het decoderen weggehaald. De rest niet: een koppelteken in 48-65, een # voor een kleurcode of een letter voorbij de f breekt het decoderen af, net als een oneven aantal cijfers, want een halve byte kan geen teken worden. In die gevallen geeft de tool liever helemaal niets terug dan een half geraden resultaat. Blijft het uitvoerveld leeg, dan moet je dáár zoeken.

Hexkleuren gebruiken dezelfde notatie, maar niet dezelfde inhoud

#ff8800 gebruikt hetzelfde stelsel met grondtal 16, maar die drie bytes beschrijven de kanalen rood, groen en blauw, geen tekens. Haal de # weg en decodeer het hier, dan krijg je drie kale bytes die geen leesbare tekst vormen. Gebruik daarvoor liever een kleurenkiezer.

Veelgestelde vragen

Ja. Hexadecimaal en base16 zijn twee namen voor hetzelfde stelsel: zestien cijfers (0 tot en met 9 en a tot en met f), elk goed voor 4 bits.

Niet uit deze tool. De codeerkant schrijft altijd klein. Omdat hex geen onderscheid maakt tussen hoofd- en kleine letters, zijn 4f en 4F dezelfde byte: haal het resultaat dus door een willekeurige omzetter voor hoofdlettergebruik als jouw formaat dat vraagt. De decoder leest beide vormen zonder morren.

De decoder accepteert alleen de cijfers 0 tot en met 9 en a tot en met f, in een even aantal, nadat 0x- en \x-voorvoegsels, komma’s en witruimte zijn verwijderd. Een koppelteken, een #, een letter voorbij de f of één ontbrekend cijfer maken de invoer ongeldig, en de tool geeft liever niets dan iets verkeerds. Tel de cijfers en zoek naar verdwaalde leestekens.

De meeste emoji staan in de aanvullende vlakken van Unicode, die UTF-8 in vier bytes opslaat. Kale ASCII-tekens blijven één byte per stuk, en daarom levert Engelse tekst één paar per teken op en Nederlandse tekst met accenten niet.

Nee. Dit is een tekstveld, dus het verwerkt wat je kunt typen of plakken. Voor binaire gegevens is base64 zowel compacter als makkelijker te vervoeren.

Ja. De omzetting draait op onze server, dus wat je plakt reist mee met het verzoek en het resultaat komt terug. We leggen alleen de actie en de gekozen opties vast, nooit de tekst zelf, en de tekst wordt na het antwoord niet bewaard. Voor werkelijk vertrouwelijk materiaal gebruik je een omzetter die offline op je eigen machine draait.

Gerelateerde tools

Tool beschikbaar in andere talen