Cum funcționează codificarea hex
Fiecare caracter de pe o pagină este stocat ca unul sau mai mulți octeți. Codificarea hex rescrie acești octeți în baza 16, două caractere per octet, astfel încât fluxul de octeți să fie lizibil fără unelte speciale.
- Codifică textul în octeți. Modul UTF-8 rulează intrarea prin
new TextEncoder().encode(text), care returnează unUint8Arraycu valorile octeților. Modul Latin-1 preia ultimii opt biți ai fiecărei unități de cod princharCodeAt(0) & 0xFF, care este conversia realizată de codecurile moștenite ISO-8859-1. - Redă fiecare octet ca două cifre hex. Fiecare octet se mapează la două cifre hex prin
byte.toString(16).padStart(2, "0"). Comutatorul de majuscule alege litere mari (A-F) sau litere mici (a-f) pentru literele de ieșire. - Aplică gruparea și prefixul. Gruparea inserează un separator între octeți: un spațiu simplu, o cratimă sau un spațiu la fiecare patru octeți. Prefixul 0x poate fi adăugat o singură dată la întregul șir (fără grupare) sau per octet (grupare cu spațiu), corespunzând convențiilor pe care le așteaptă tablourile C și uneltele de diff binar.
- Decodificare inversă. Modul Hex → Text elimină toate spațiile, cratimele și prefixele
0xdin intrare, validează caracterele rămase cu/^[0-9a-fA-F]+$/, respinge șirurile de lungime impară și reconstruiește unUint8Arraydin perechi succesive de octeți. Modul UTF-8 decodifică acel tablou cunew TextDecoder("utf-8", { fatal: true }); modul Latin-1 mapează fiecare octet laString.fromCharCode(b). - Mod live pentru iterație rapidă. Modul live este activat implicit. Fiecare tastare programează o reconversie cu debounce de 150 ms, astfel încât să poți lipi, edita și vedea cum se actualizează celălalt panou fără a face clic pe butonul Convertește.
De ce să folosești un convertor hex
- Depanarea protocoalelor binare. Formatele de rețea precum Modbus, DNP3 și CoAP împachetează anteturile în anumiți octeți. Citirea unui cadru capturat ca hex arată fiecare câmp dintr-o privire, iar transformarea acelorași octeți înapoi în ASCII evidențiază orice sarcină utilă în text simplu aflată lângă cadrul binar.
- Lucrul cu firmware încorporat. Sondele JTAG și SWD raportează conținutul memoriei ca hex. Traducerea unei zone de memorie în ASCII identifică șiruri încorporate (căi de fișiere, mesaje de eroare, semnături ale furnizorului) care deseori indică exact unde te afli în firmware.
- Citirea capturilor de pachete. Wireshark și tcpdump afișează un panou de octeți care imprimă fiecare pachet ca hex în stânga și ASCII în dreapta. Convertind un fragment aici, poți copia un blob hex dintr-un raport de eroare sau dintr-un jurnal de chat și poți citi ce spun octeții fără a-i reimporta într-o unealtă de captură.
- Diff-uri la nivel de octet. Compararea a două fișiere binare se rezumă adesea la a identifica care octeți s-au modificat. Convertind ambele părți în hex cu o grupare consecventă, diff-ul se aliniază într-un editor de text, unde o unealtă de diff încorporată poate evidenția octeții modificați.
Aplicații comune
Conversia Hex ↔ ASCII apare frecvent în ingineria inversă, securitate și lucrul cu sisteme încorporate, oriunde un flux de octeți este mai mult decât o sarcină utilă de text.
- Inginerie inversă: ia un dump hex dintr-un binar rezistent la șiruri, extrage secvențe care se decodifică ca ASCII imprimabil și folosește acele șiruri pentru a te ancora în dezasamblare.
- Expertiză criminalistică de rețea: copiază un pachet individual din Wireshark ca hex, lipește-l aici și citește textul la nivel de aplicație fără a exporta întreaga captură.
- Manipularea materialului criptografic: o cheie, IV sau etichetă HMAC sosește adesea ca șir hex. Decodificarea înapoi în octeți confirmă că lungimea corespunde algoritmului (16 octeți pentru AES-128, 32 pentru AES-256) înainte de a o integra într-o configurație.
Un exemplu practic
Alege Text → Hex, UTF-8, minuscule, grupare Spațiu-la-fiecare-octet, fără prefix. Tastează Hi: ieșirea afișează 48 69. Activează prefixul și setarea de grupare la Niciuna, iar aceeași intrare devine 0x4869. Lipește emoji-ul 😀 ca intrare și modul UTF-8 redă f0 9f 98 80 — patru octeți pentru un singur punct de cod, motiv pentru care emoji-urile inflamează adesea dimensiunea transmisiei. Comută la Hex → Text și lipește 0x48-65-6C 6C 6F: parserul elimină prefixul, cratimele și spațiile și reconstruiește Hello.
FAQ
Ce este codificarea hex?
Codificarea hex (sau codificarea hexazecimală) scrie un flux de octeți în baza 16, două caractere ASCII per octet. Fiecare cifră hex acoperă patru biți, deci două cifre acoperă un octet de opt biți. Alfabetul merge de la 0-9, apoi A-F (sau a-f); majusculele sunt doar o alegere de prezentare, iar decodificatoarele acceptă oricare variantă. Hex este modul standard de a scrie octeți bruti în specificațiile de protocol, ieșirea debuggerelor și chei criptografice, deoarece este de două ori mai compact decât binarul și evită problemele caracterelor neimprimabile ale octeților bruti în text.
De ce emoji-ul meu devine 4 octeți în hex?
UTF-8 este o codificare de lungime variabilă. Caracterele ASCII (U+0000 până la U+007F) ocupă un octet, suplimentele Latin-1 ocupă doi, majoritatea celorlalte puncte de cod BMP ocupă trei, iar caracterele de deasupra U+FFFF — inclusiv majoritatea emoji-urilor — ocupă patru. Fața zâmbitoare 😀 este U+1F600 și se codifică în F0 9F 98 80. Dacă ai nevoie de o vedere cu lățime fixă, comută la Latin-1 — dar Latin-1 acoperă doar primele 256 de puncte de cod, așa că orice caracter din afara acestei game nu poate face un parcurs complet.
Suportă acest instrument Latin-1 / ISO-8859-1?
Da. Comută opțiunea de codificare text la Latin-1 (ISO-8859-1). Codificarea preia ultimii opt biți ai fiecărei unități de cod JavaScript (charCodeAt(0) & 0xFF), ceea ce corespunde mapării moștenite pe un singur octet. Decodificarea folosește String.fromCharCode(byte) pentru fiecare octet. Folosește Latin-1 când lucrezi cu ieșirea de la sisteme mai vechi Windows-1252 sau pre-Unicode, unde fiecare octet reprezintă exact un caracter.
Conversia se face în browserul meu?
Da. Convertorul rulează TextEncoder, TextDecoder și un mic parser ca o singură pagină statică. Nu există încărcare, niciun apel API și nicio analiză a ceea ce lipești — doar metricile standard de încărcare a paginii partajate pe întreg site-ul. Aceiași octeți hex pe care îi vezi aici sunt exact ceea ce ar produce un script Node sau o funcție Lambda pentru aceeași intrare.
Conversia Hex ↔ ASCII este o sarcină mică pe care oricine lucrează cu protocoale binare sau firmware încorporat o face de câteva ori pe zi. Realizând-o într-o filă de browser, cu aceleași codificatoare native pe care le folosesc Node și V8, munca rămâne rapidă, iar fluxul de octeți rămâne pe mașina ta.