Yadda ɓoyayyun hex ke aiki
Ana ajiye kowane harafi a shafi a matsayin byte ɗaya ko fiye. Ɓoyayyun hex yana sake rubuta waɗancan bytes a tushe 16, haruffa biyu a kowace byte, don a iya karanta jerin byte ba tare da kayan aiki na musamman ba.
- Ɓoye rubutun zuwa bytes. Yanayin UTF-8 yana gudanar da shigarwa ta cikin
new TextEncoder().encode(text), wanda ke dawo daUint8Arrayna ƙimomin byte. Yanayin Latin-1 yana ɗaukar ƙananan bits 8 na kowane code unit tacharCodeAt(0) & 0xFF, wanda shine juyarwa da codec ɗin gado na ISO-8859-1 ke aiwatarwa. - Nuna kowane byte a matsayin digits biyu na hex. Kowane byte yana auna zuwa digits biyu na hex ta
byte.toString(16).padStart(2, "0"). Maɓallin yanayin haruffa yana zaɓar babba (A-F) ko ƙanana (a-f) akan haruffan fitowar. - Yi amfani da ƙungiyoyi da prefix. Ƙungiyoyi suna saka mai rarrabe tsakanin bytes: sarari guda ɗaya, dash, ko sarari a kowane bytes huɗu. Ana iya ƙara prefix na 0x sau ɗaya zuwa duk string (ƙungiyoyin Babu) ko a kowace byte (ƙungiyoyin Sarari), daidaita da al'adun da arrays na C da kayan aikin binary diff ke sa ran.
- Buɗe ɓoye a juye. Yanayin Hex → Rubutu yana yanyanka kowane sarari, dash, da prefix na
0xdaga shigarwa, yana tabbatar da haruffan da suka rage da ke adawa da/^[0-9a-fA-F]+$/, yana ƙi strings masu tsawo ɗi, kuma yana sake ginaUint8Arraydaga nau'o'i na byte masu jere. Yanayin UTF-8 yana buɗe ɓoye wannan array danew TextDecoder("utf-8", { fatal: true }); Yanayin Latin-1 yana auna kowane byte zuwaString.fromCharCode(b). - Yanayin live don maimaita mai sauri. Yanayin live yana a ke ta tsoho. Kowane danna key yana tsarawa sake-juyar da debounced na 150 ms don ku iya lallaba, gyara, da kallon pane ɗin ɗaya na biyu sabunta ba tare da danna maɓallin Juyar ba.
Me ya sa ake amfani da mai juyar da hex
- Debugging protocols na binary. Tsarukan layin kamar Modbus, DNP3, da CoAP suna saka taken su a cikin offsets na byte masu takaita. Karanta frame da aka kama a matsayin hex yana nuna kowane filin a taron gani, kuma juya bytes ɗaya zuwa ASCII yana bayyana kowane abin da ke ciki na rubutu mai sauƙi da ke zaune tare da binary framing.
- Aiki tare da firmware da aka saka. Probes na JTAG da SWD suna ba da rahoto abun ciki na ƙwaƙwalwa a matsayin hex. Fassara wani yanki na ƙwaƙwalwa zuwa ASCII yana ɗebo strings da aka saka (hanyoyin fayil, saƙonnin kuskure, sa hannun diloli) waɗanda galibi suna nuna inda a cikin firmware kuke kallo.
- Karanta kames na packet. Wireshark da tcpdump duka suna aika pane na byte wanda ke buga kowane packet a matsayin hex a hagu da ASCII a dama. Juyar da snippet anan yana ba ka damar kwafi blob na hex daga rahoton kuskure ko rikodin zungur da karanta abin da bytes ke faɗa ainihin ba tare da sake shigo da su a cikin kayan aikin kama ba.
- Diffs a matakin byte. Kwatanta fayiloli biyu na binary galibi yana zuwa gano wanne bytes ya canza. Juyar da gefen biyu zuwa hex tare da ƙungiyoyin daidai yana sanya diff layi a cikin editan rubutu, inda kayan aikin diff na cikin gida zai iya haskaka bytes da suka canza.
Amfani na yau da kullun
Juyar da Hex ↔ ASCII yana bayyana a cikin injiniya ta reverse, tsaro, da aikin da aka saka ko'ina jerin byte ya fi zama kawai abin da ke cikin rubutu.
- Injiniya ta reverse: ɗauki hex dump daga binary mai tsayayye ga strings, zaɓi gudua waɗanda ke buɗe ɓoye a matsayin ASCII mai iya karanta, kuma yi amfani da waɗancan strings don ƙulla inda kuke a cikin disassembly.
- Forensics na cibiyar sadarwa: kwafi abin da ke ciki na packet guda ɗaya daga Wireshark a matsayin hex, lallaba shi anan, da karanta rubutun application-layer ba tare da fitar da duk kama ba.
- Sarrafa kayan crypto: makulli, IV, ko tag na HMAC galibi yana tafiya a matsayin string na hex. Buɗe ɓoye zuwa bytes yana tabbatar da tsawo ya daidaita da algorithm (bytes 16 don AES-128, 32 don AES-256) kafin ku saka shi a cikin saiti.
Misali da aka yi aiki
Zaɓi Rubutu → Hex, UTF-8, ƙanana, ƙungiyoyin Sarari-a-kowane-byte, prefix kashe. Buga Hi: fitowar tana karatu 48 69. Kunna prefix kuma canza ƙungiyoyin zuwa Babu kuma shigarwa ɗaya tana nuna a matsayin 0x4869. Lallaba emoji 😀 a matsayin shigarwa kuma yanayin UTF-8 yana nuna f0 9f 98 80 — bytes huɗu don code point guda ɗaya, wanda shine dalilin da emoji galibi suke ƙara girman jigilar kaya. Canza zuwa Hex → Rubutu da lallaba 0x48-65-6C 6C 6F: mai bincike yana yanyanka prefix, dashes, da sarari kuma yana sake gina Hello.
FAQ
Mene ne ɓoyayyun hex?
Ɓoyayyun hex (ko ɓoyayyun hexadecimal) yana rubuta jerin byte a tushe 16, haruffa biyu na ASCII a kowace byte. Kowane digit na hex yana rufe bits huɗu, don haka digits biyu suna rufe byte ɗaya na bits 8. Haruffan suna gudana 0-9 sannan A-F (ko a-f); yanayin haruffa zaɓi na gabatarwa kawai ne kuma masu buɗe ɓoye suna karɓar ko ɗaya. Hex shine hanyar ma'auni don rubuta bytes masu tsatsa a cikin ƙa'idodin protocol, fitowar mai debug, da makullan crypto saboda yana da sau biyu mafi ƙarami fiye da binary kuma yana gujewa matsalolin haruffa marasa iya buga na bytes masu tsatsa a cikin rubutu.
Me ya sa emoji na ya zama bytes 4 a hex?
UTF-8 ɓoyewa ne mai tsawo mai canzawa. Haruffan ASCII (U+0000 zuwa U+007F) suna ɗaukar byte ɗaya, kayan haɓaka Latin-1 suna ɗaukar biyu, yawancin sauran code points na BMP suna ɗaukar uku, da haruffa a sama da U+FFFF — ciki har da yawancin emoji — suna ɗaukar huɗu. Fuska mai murmushi 😀 ita ce U+1F600 kuma tana ɓoyewa zuwa F0 9F 98 80. Idan kuna buƙatar duba byte mai faɗin tsayayye, canza zuwa Latin-1 — amma Latin-1 yana rufe code points 256 na farko kawai, don haka kowane harafi a wajen wannan kewayen ba zai iya zagayowa ba.
Shin wannan yana goyan bayan Latin-1 / ISO-8859-1?
Eh. Canza zaɓin Ɓoyayyun Rubutu zuwa Latin-1 (ISO-8859-1). Ɓoyewa yana ɗaukar ƙananan bits 8 na kowane code unit na JavaScript (charCodeAt(0) & 0xFF), wanda ya daidaita da auna byte guda ɗaya na gado. Buɗe ɓoye yana amfani da String.fromCharCode(byte) don kowane byte. Yi amfani da Latin-1 lokacin da kuke aiki da fitowar daga tsofaffin tsarin Windows-1252 ko kafin-Unicode inda kowane byte ke wakiltar harafi ɗaya kawai.
Shin ana yin juyarwa a cikin mai binciken na?
Eh. Mai juyar da launi yana gudanar da TextEncoder, TextDecoder, da ƙaramin mai bincike a matsayin shafi guda ɗaya mai tsaye. Babu loda, babu kiran API, da babu nazari akan abin da kuka lallaba — mita na loda shafi na yau da kullun kawai da aka raba a cikin gidan yanar gizon. Bytes na hex ɗaya da kuke gani anan shine abin da script na Node ko aiki na Lambda zai samar da ke adawa da shigarwa ɗaya.
Juyar da Hex ↔ ASCII ƙaramin aiki ne wanda kowa mai karanta protocols na binary ko firmware da aka saka ke yi sau da yawa a rana. Yin shi a shafin mai binciken, tare da masu ɓoye na asali ɗaya da Node da V8 sun riga sun aika, yana ajiye aikin mai sauri da jerin byte akan na'urarku.