§

Options

Mod
Grupare hex
Prefix 0x
Majuscule/Miniscule
Codificare text
§

Intrare

§

Ieșire

Echipele americane de intervenție care lucrează pe cazuri ICS-CERT recurg la conversia hex ↔ ASCII de fiecare dată când extrag o captură de pachete în Wireshark și inspectează panoul de octeți al unui cadru Modbus sau DNP3, deoarece anteturile de protocol se citesc clar în hex, în timp ce sarcinile utile ascund adesea text ASCII în interiorul cadrului binar. Auditorii britanici NCSC CHECK care evaluează pachetele de dovezi HMG IA Standard No.1 alternează între hex și ASCII când examinează materialul criptografic schimbat cu HSM-uri, deoarece cheile de sesiune sosesc ca șiruri hex, dar octeții de etichetă specifici furnizorului încorporează etichete ASCII simple. Inginerii de firmware încorporați de ambele părți ale Atlanticului citesc în același fel dump-uri JTAG, iar acest convertor realizează aceeași traducere fără a părăsi fila browserului.

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.

  1. Codifică textul în octeți. Modul UTF-8 rulează intrarea prin new TextEncoder().encode(text), care returnează un Uint8Array cu valorile octeților. Modul Latin-1 preia ultimii opt biți ai fiecărei unități de cod prin charCodeAt(0) & 0xFF, care este conversia realizată de codecurile moștenite ISO-8859-1.
  2. 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.
  3. 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.
  4. Decodificare inversă. Modul Hex → Text elimină toate spațiile, cratimele și prefixele 0x din intrare, validează caracterele rămase cu /^[0-9a-fA-F]+$/, respinge șirurile de lungime impară și reconstruiește un Uint8Array din perechi succesive de octeți. Modul UTF-8 decodifică acel tablou cu new TextDecoder("utf-8", { fatal: true }); modul Latin-1 mapează fiecare octet la String.fromCharCode(b).
  5. 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.