§

Options

Modus
Hex-groepering
0x-prefix
Hoofdlettergebruik
Tekstcodering
§

Invoer

§

Uitvoer

KLM Engineering & Maintenance gebruikt ARINC-429 avionicabussen waarvan elk 32-bits woord als hexadecimale waarde in onderhoudslogs verschijnt. Technici die bij de Dutch fleet de boordcomputers van Boeing 737- en Airbus A330-vliegtuigen inspecteren, converteren die hex-frames naar leesbare ASCII-labels om LRU-foutcodes en configuratieparameters te ontcijferen zonder speciale avionica-grondapparatuur. Bij Shell Pernis bewaken procesautomatiseringsengineers Modbus RTU-frames van SCADA-systemen in de petrochemische regelkamer, waarbij ruwe seriële hex-bytes moeten worden omgezet naar ASCII-tagbenamingen en meetwaarden om afwijkingen in de procesinstallatie tijdig te signaleren. Deze converter verwerkt beide conversierichtingen direct in de browser, zonder upload.

Hoe hexadecimale codering werkt

Elk teken op een pagina wordt opgeslagen als een of meer bytes. Hexadecimale codering schrijft die bytes om in grondtal 16, twee tekens per byte, zodat de bytestroom leesbaar is zonder speciale hulpmiddelen.

  1. Tekst coderen naar bytes. UTF-8-modus verwerkt de invoer via new TextEncoder().encode(text), wat een Uint8Array van bytewaarden teruggeeft. Latin-1-modus neemt de laagste acht bits van elke code-eenheid via charCodeAt(0) & 0xFF, de conversie die verouderde ISO-8859-1-codecs uitvoeren.
  2. Elke byte als twee hex-cijfers weergeven. Elke byte wordt omgezet naar twee hex-cijfers via byte.toString(16).padStart(2, "0"). De hoofdletterschakelaar kiest hoofdletters (A-F) of kleine letters (a-f) voor de uitvoer.
  3. Groepering en prefix toepassen. Groepering voegt een scheidingsteken in tussen bytes: een spatie, een koppelteken of een spatie per vier bytes. De 0x-prefix kan eenmalig voor de hele string worden geplaatst (geen groepering) of per byte (spatiegroeperig), wat overeenkomt met de conventies die C-arrays en binaire diff-tools verwachten.
  4. Omgekeerd decoderen. Hex → Tekst verwijdert alle spaties, koppeltekens en 0x-prefixen uit de invoer, valideert de resterende tekens met /^[0-9a-fA-F]+$/, weigert strings met een oneven lengte en bouwt een Uint8Array op uit opeenvolgende byteparen. UTF-8-modus decodeert die array met new TextDecoder("utf-8", { fatal: true }); Latin-1-modus wijst elke byte toe via String.fromCharCode(b).
  5. Live-modus voor snelle iteratie. Live-modus staat standaard aan. Elke toetsaanslag plant een her-conversie met 150 ms debounce, zodat je kunt plakken, bewerken en het andere venster ziet bijwerken zonder op de knop Converteren te klikken.

Waarom een hex-converter gebruiken

  • Binaire protocollen debuggen. Wire-formaten zoals Modbus, DNP3 en CoAP pakken hun headers in specifieke byte-offsets. Een vastgelegd frame als hex lezen toont elk veld in een oogopslag, en dezelfde bytes terug naar ASCII omzetten maakt elk platte-tekst-payload zichtbaar naast de binaire omlijsting.
  • Werken met embedded firmware. JTAG- en SWD-probes rapporteren geheugeninhoud als hex. Een geheugengebied naar ASCII vertalen onthult ingebedde strings (bestandspaden, foutmeldingen, leverancierssignaturen) die vaak aanwijzen waar in de firmware je kijkt.
  • Pakketopnames lezen. Wireshark en tcpdump tonen een bytepaneel met elk pakket als hex links en ASCII rechts. Een fragment hier converteren laat je een hex-blob uit een bugreport of chatlog kopiëren en lezen wat de bytes zeggen zonder ze opnieuw in een capture-tool te importeren.
  • Byte-niveau diffs. Twee binaire bestanden vergelijken komt vaak neer op het opsporen van gewijzigde bytes. Beide zijden naar hex converteren met consistente groepering laat de diff uitlijnen in een teksteditor, waar een ingebouwde diff-tool de gewijzigde bytes kan markeren.

Veelvoorkomende toepassingen

Hex ↔ ASCII-conversie komt voor bij reverse engineering, beveiliging en embedded werk wanneer een bytestroom meer is dan alleen een tekst-payload.

  • Reverse engineering: neem een hex-dump uit een strings-bestendige binary, filter runs die decoderen als afdrukbare ASCII, en gebruik die strings als anker in de disassembly.
  • Netwerkforensisch onderzoek: kopieer een enkele pakket-payload uit Wireshark als hex, plak hem hier en lees de applicatielaag-tekst zonder de volledige opname te exporteren.
  • Cryptomateriaal verwerken: een sleutel, IV of HMAC-tag wordt vaak als hexadecimale string meegeleverd. Terugdecoderen naar bytes bevestigt dat de lengte overeenkomt met het algoritme (16 bytes voor AES-128, 32 voor AES-256) voordat je het in een configuratie verwerkt.

Een uitgewerkt voorbeeld

Kies Tekst → Hex, UTF-8, kleine letters, spatie-per-byte-groepering, prefix uit. Typ Hi: de uitvoer luidt 48 69. Zet de prefix aan en de groepering op Geen en dezelfde invoer geeft 0x4869. Plak de emoji 😀 als invoer en UTF-8-modus geeft f0 9f 98 80 — vier bytes voor één codepunt, waardoor emoji de transmissieomvang vaak vergroten. Schakel naar Hex → Tekst en plak 0x48-65-6C 6C 6F: de parser verwijdert de prefix, de koppeltekens en de spaties en bouwt Hello terug.

FAQ

Wat is hexadecimale codering?

Hexadecimale codering schrijft een bytestroom in grondtal 16, twee ASCII-tekens per byte. Elk hex-cijfer dekt vier bits, zodat twee cijfers een 8-bits byte dekken. Het alfabet loopt van 0-9 en dan A-F (of a-f); het hoofdlettergebruik is puur een presentatiekeuze en decoders accepteren beide vormen. Hex is de standaardmanier om ruwe bytes te noteren in protocolspecificaties, debugger-uitvoer en cryptosleutels, omdat het tweemaal compacter is dan binair en problemen met niet-afdrukbare tekens in gewone tekst vermijdt.

Waarom wordt mijn emoji 4 bytes in hex?

UTF-8 is een codering met variabele lengte. ASCII-tekens (U+0000 t/m U+007F) nemen één byte, Latin-1-aanvullingen twee, de meeste andere BMP-codepunten drie, en tekens boven U+FFFF — waaronder de meeste emoji — vier. Het lachende gezicht 😀 is U+1F600 en codeert naar F0 9F 98 80. Als je een byte-weergave van vaste breedte nodig hebt, schakel dan naar Latin-1 — maar Latin-1 dekt alleen de eerste 256 codepunten, dus tekens buiten dat bereik kunnen niet volledig worden vertegenwoordigd.

Ondersteunt dit Latin-1 / ISO-8859-1?

Ja. Schakel de optie Tekstcodering naar Latin-1 (ISO-8859-1). Codering neemt de laagste acht bits van elke JavaScript-code-eenheid (charCodeAt(0) & 0xFF), wat overeenkomt met de verouderde single-byte-mapping. Decodering gebruikt String.fromCharCode(byte) voor elke byte. Gebruik Latin-1 wanneer je werkt met uitvoer van oudere Windows-1252- of pre-Unicode-systemen waarbij elke byte exact één teken vertegenwoordigt.

Wordt de conversie in mijn browser uitgevoerd?

Ja. De converter voert TextEncoder, TextDecoder en een kleine parser uit als een enkele statische pagina. Er is geen upload, geen API-aanroep en geen analyse van wat je plakt — alleen de standaard paginalaad-statistieken die op de hele site worden gedeeld. Dezelfde hex-bytes die je hier ziet, zijn wat een Node-script of een Lambda-functie zou produceren voor dezelfde invoer.

Hex ↔ ASCII-conversie is een kleine klus die iedereen die binaire protocollen of embedded firmware leest meerdere keren per dag uitvoert. Dit in een browsertabblad doen, met dezelfde native encoders die Node en V8 al meebrengen, houdt het werk snel en de bytestroom op je machine.