§

Options

Rejim
Hex guruhlash
0x prefiksi
Harf turi
Matn kodlash
§

Kirish

§

Chiqish

Kapitalbank muhandislari ISO 8583 toʻlov xabarlarini disk raskadrovka qilishda har bir maydon ofsetini hex koʻrinishida oʻqiydi — toʻlov summasidan tortib terminalning identifikatorigacha — va har baytni ASCII ga aylantirish orqali qaysi maydon notoʻgʻri uzatilganini tezda aniqlaydi. Uzbekneftegaz SCADA texniklari Modbus RTU seriyali kadrlarini nazorat stansiyalaridan olib, har bir baytni hexda tekshiradi va qaysi registrga buyruq yuborilganini aniqlash uchun ASCII payloadini ochadi. Xuddi shu konversiya Oʻzbekiston Havo Yoʻllari aviatsiya elektronikasida ARINC-429 soʻzlarini hexdan oʻqiydigan muhandislar uchun ham muhim ahamiyat kasb etadi — bu vosita barcha shu ishlarni brauzer yorligʻidan chiqmasdan bajaradi.

Hex kodlash qanday ishlaydi

Sahifadagi har bir belgi bir yoki bir nechta bayt sifatida saqlanadi. Hex kodlash bu baytlarni 16 asosida, baytiga ikki belgi bilan qayta yozadi, shunda bayt oqimi maxsus vositalarsiz oʻqiladi.

  1. Matnni baytlarga kodlash. UTF-8 rejimi kirishni new TextEncoder().encode(text) orqali oʻtkazadi, bu bayt qiymatlarining Uint8Array sini qaytaradi. Latin-1 rejimi har bir kod birligi uchun charCodeAt(0) & 0xFF orqali pastki sakkiz bitni oladi, bu eski ISO-8859-1 kodeklari bajara-digan konversiyaga mos keladi.
  2. Har bir baytni ikki hex raqami sifatida koʻrsatish. Har bir bayt byte.toString(16).padStart(2, "0") orqali ikki hex raqamiga aylanadi. Harf turi oʻzgartirish chiqishdagi harflar uchun katta (A-F) yoki kichik (a-f) harfni tanlaydi.
  3. Guruhlash va prefiksni qoʻllash. Guruhlash baytlar orasiga ajratuvchi qoʻshadi: bitta boʻsh joy, chiziqcha yoki har toʻrt baytda boʻsh joy. 0x prefiksi butun satrga bir marta (Yoʻq guruhlash) yoki har baytga (Boʻsh joy guruhlash) qoʻshilishi mumkin — bu C massivlari va ikkilik diff vositalari kutadigan konventsiyalarga mos keladi.
  4. Teskari yoʻnalishda dekodlash. Hex → Matn rejimi kirishdagi barcha boʻsh joy, chiziqcha va 0x prefikslarini olib tashlaydi, qolgan belgilarni /^[0-9a-fA-F]+$/ ga nisbatan tekshiradi, toq uzunlikli satrlarni rad etadi va ketma-ket bayt juftliklaridan Uint8Array qayta tuzadi. UTF-8 rejimi bu massivni new TextDecoder("utf-8", { fatal: true }) bilan dekodlaydi; Latin-1 rejimi har bir baytni String.fromCharCode(b) ga moslashtiradi.
  5. Tezkor ishlash uchun jonli rejim. Jonli rejim sukut boʻyicha yoqiq. Har bir tugmachani bosish 150 ms kechiktirilgan qayta aylantirishni rejalashtiradi, shuning uchun siz joylashtira, tahrirlay va Aylantirish tugmasini bosmasdan ikkinchi panelning yangilanishini kuzatishingiz mumkin.

Nima uchun hex konvertor ishlatish kerak

  • Ikkilik protokollarni disk raskadrovka qilish. Modbus, DNP3 va CoAP kabi simli formatlar sarlavhalarini muayyan bayt ofsetlariga joylaydi. Ushlangan kadrni hex sifatida oʻqish har bir maydonni bir qarashda koʻrsatadi, xuddi shu baytlarni ASCII ga qaytarish esa ikkilik freym yonidagi tekst yukini ochib beradi.
  • Oʻrnatilgan proshivka bilan ishlash. JTAG va SWD zondlar xotira mazmunini hex sifatida xabar qiladi. Xotira boʻlimini ASCII ga aylantirish proshivkaning qayerida ekanligingizni koʻpincha aniqlaydigan oʻrnatilgan satrlarni (fayl yoʻllari, xato xabarlari, ishlab chiqaruvchi imzolari) topib beradi.
  • Paket ushlashlarini oʻqish. Wireshark va tcpdump ikkalasi ham har bir paketni chapda hex va oʻngda ASCII sifatida chop etadigan bayt panelini oʻz ichiga oladi. Bu yerda bir boʻlakni aylantirib, xato hisoboti yoki chat jurnalidan hex blobni nusxalab olishingiz va baytlarning nima deganini ushlash vositasiga qayta import qilmasdan oʻqishingiz mumkin.
  • Bayt darajasidagi farqlar. Ikki ikkilik faylni solishtirish koʻpincha qaysi baytlar oʻzgarganini aniqlashga qarab keladi. Ikki tomoni ham izchil guruhlash bilan hexga aylantirish diffni matn muharriridagi qatorda toʻgʻrilab qoʻyadi, u yerda oʻrnatilgan diff vositasi oʻzgargan baytlarni ajratib koʻrsatishi mumkin.

Keng tarqalgan qoʻllanmalar

Hex ↔ ASCII konversiyasi teskari muhandislik, xavfsizlik va oʻrnatilgan ishlar boʻylab bayt oqimi oddiy matn yukidan koʻproq narsa boʻlganda paydo boʻladi.

  • Teskari muhandislik: satrga chidamli ikkilikdan hex damp oling, chop etiladigan ASCII sifatida dekodlanadigan qatorlarni tanlang va ushbu satrlardan montaj kodidagi joylashuvingizni aniqlash uchun foydalaning.
  • Tarmoq kriminalistikasi: Wiresharkdan bitta paket yukini hex sifatida nusxalab oling, bu yerga joylashtiring va butun ushlashni eksport qilmasdan ilova qatlami matnini oʻqing.
  • Kripto material boshqaruvi: kalit, IV yoki HMAC tegining uzunligi hex satr sifatida keladi. Baytlarga qayta dekodlash uzunlikni algoritmga mosligini tekshiradi (AES-128 uchun 16 bayt, AES-256 uchun 32) — konfiguratsiyaga ulashdan oldin.

Ishlangan misol

Matn → Hex, UTF-8, kichik harf, Boʻsh joy-har-bayt guruhlash, prefikssiz tanlang. Hi kiriting: chiqish 48 69 koʻrsatadi. Prefiksni yoqing va guruhlashni Yoʻq ga oʻzgartiring — xuddi shu kirish 0x4869 sifatida koʻrsatiladi. 😀 emojisini kirish sifatida joylashtiring va UTF-8 rejimi f0 9f 98 80 ni koʻrsatadi — bitta kod nuqtasi uchun toʻrt bayt, shuning uchun emojillar koʻpincha uzatish hajmini oshiradi. Hex → Matn ga oʻting va 0x48-65-6C 6C 6F ni joylashtiring: tahlilchi prefiksni, chiziqchalarni va boʻsh joylarni olib tashlaydi hamda Hello ni qayta tuzadi.

FAQ

Hex kodlash nima?

Hex kodlash (yoki oʻn oltilik kodlash) bayt oqimini 16 asosida, baytiga ikkita ASCII belgisi bilan yozadi. Har bir hex raqami toʻrt bitni qamrab oladi, shuning uchun ikki raqam bitta sakkiz bitli baytni qamrab oladi. Alifbo 0-9 dan keyin A-F (yoki a-f) gacha ketadi; harf turi sof taqdimot tanlovi boʻlib, dekodlashtiruvchilar ikkalasini ham qabul qiladi. Hex protokol spesifikatsiyalari, disk raskadrovchi chiqishi va kripto kalitlarida xom baytlarni yozishning standart usuli, chunki u ikkilikdan ikki marta ixcham va matnda xom baytlarning chop etib boʻlmaydigan belgi muammolaridan qochadi.

Nima uchun mening emojim hexda 4 baytga aylanadi?

UTF-8 oʻzgaruvchan uzunlikdagi kodlash. ASCII belgilari (U+0000 dan U+007F gacha) bir bayt oladi, Latin-1 qoʻshimchalari ikki, koʻpchilik boshqa BMP kod nuqtalari uch va U+FFFF dan yuqori belgilar — koʻpchilik emojiler — toʻrt bayt oladi. Tabassum yuzi 😀 U+1F600 boʻlib F0 9F 98 80 ga kodlanadi. Agar siz sobit kenglikdagi bayt koʻrinishi kerak boʻlsa, Latin-1 ga oʻting — lekin Latin-1 faqat birinchi 256 kod nuqtasini qamrab oladi, shuning uchun bu diapazondan tashqaridagi har qanday belgi toʻliq aylana olmasligi mumkin.

Bu Latin-1 / ISO-8859-1 ni qoʻllayaptimi?

Ha. Matn kodlash opsiyasini Latin-1 (ISO-8859-1) ga oʻzgartiring. Kodlash har bir JavaScript kod birligining pastki sakkiz bitini (charCodeAt(0) & 0xFF) oladi, bu eski bir baytli moslashtirmaga mos keladi. Dekodlash har bir bayt uchun String.fromCharCode(byte) dan foydalanadi. Eski Windows-1252 yoki Unicode oldingi tizimlar chiqishi bilan ishlayotganingizda Latin-1 dan foydalaning, u yerda har bir bayt aynan bitta belgini ifodalaydi.

Konversiya brauzerimda amalga oshirilmoqdami?

Ha. Konvertor TextEncoder, TextDecoder va kichik tahlilchini bitta statik sahifa sifatida ishlatadi. Hech qanday yuklash, API chaqiruvi va siz joylashtirganingiz boʻyicha hech qanday tahlil yoʻq — faqat sayt boʻylab umumlashtirilgan standart sahifani yuklash koʻrsatkichlari. Bu yerda koʻrgan xuddi shu hex baytlari Node skripti yoki Lambda funksiyasi xuddi shu kirishga nisbatan ishlab chiqaradigan narsadir.

Hex ↔ ASCII konversiyasi ikkilik protokollar yoki oʻrnatilgan proshivkani oʻqigan har bir kishi kuniga bir necha marta bajara-digan kichik ishdir. Buni brauzer yorligʻida, Node va V8 allaqachon yetkazib beradigan oʻsha mahalliy kodlashtiruvchilar bilan bajarish ishni tez va bayt oqimini mashiningizda saqlaydi.