§

Options

Hali
Makundi ya hex
Kiambishi awali cha 0x
Hali ya herufi
Usimbuaji wa maandishi
§

Ingizo

§

Matokeo

Wahandisi wa programu na watafiti wa usalama wa mtandao hutumia ubadilishaji wa hex ↔ ASCII kila wakati wanapochunguza itifaki za binary au kuchunguza maudhui ya pakiti za mtandao. Zana hii inafanya kazi kabisa kwenye kivinjari chako — data yako haisafiri kwa seva yoyote.

Jinsi usimbuaji wa hex unavyofanya kazi

Kila herufi kwenye ukurasa huhifadhiwa kama baiti moja au zaidi. Usimbuaji wa hex huandika upya baiti hizo katika msingi 16, herufi mbili kwa baiti, ili mkondo wa baiti usomeke bila zana maalum.

  1. Simba maandishi kwenye baiti. Hali ya UTF-8 inapitisha ingizo kupitia new TextEncoder().encode(text), inayorudisha Uint8Array ya thamani za baiti. Hali ya Latin-1 huchukua biti nane za chini za kila kitengo cha msimbo kupitia charCodeAt(0) & 0xFF, ambayo ni ubadilishaji unaofanywa na codec za urithi za ISO-8859-1.
  2. Wakilisha kila baiti kama tarakimu mbili za hex. Kila baiti inapangwa kwa tarakimu mbili za hex kupitia byte.toString(16).padStart(2, "0"). Togili ya hali huchagua herufi kubwa (A-F) au ndogo (a-f) kwenye herufi za matokeo.
  3. Tumia makundi na kiambishi awali. Makundi huingiza kitenganishi kati ya baiti: nafasi moja, dashi, au nafasi kwa kila baiti nne. Kiambishi awali cha 0x kinaweza kuongezwa mbele mara moja kwenye mfuatano wote (makundi ya Hakuna) au kwa kila baiti (makundi ya Nafasi), ikilingana na mifumo ambayo safu za C na zana za tofauti za binary zinatarajia.
  4. Simbua kwa nyuma. Hali ya Hex → Maandishi huondoa kila nafasi, dashi, na kiambishi awali cha 0x kutoka kwenye ingizo, huthibitisha herufi zilizobaki dhidi ya /^[0-9a-fA-F]+$/, hukataa mifuatano yenye urefu wa ajabu, na hujenga tena Uint8Array kutoka kwa jozi za baiti zinazofuatana. Hali ya UTF-8 husimbua safu hiyo na new TextDecoder("utf-8", { fatal: true }); hali ya Latin-1 hupanga kila baiti kwenye String.fromCharCode(b).
  5. Hali ya moja kwa moja kwa urekebishaji wa haraka. Hali ya moja kwa moja imewashwa kwa chaguomsingi. Kila kibonyezi hupanga ubadilishaji tena wa 150 ms uliocheleweshwa ili uweze kubandika, kuhariri, na kuona sehemu nyingine ikisasishwa bila kubonyeza kitufe cha Badilisha.

Kwa nini kutumia kibadilishi cha hex

  • Utatuzi wa itifaki za binary. Muundo wa waya kama Modbus, DNP3, na CoAP hupanga vichwa vyao kwenye offsets maalum za baiti. Kusoma fremu iliyonaswa kama hex inaonyesha kila sehemu kwa mtazamo mmoja, na kubasilisha baiti sawa kurudi kwenye ASCII kunagundua mzigo wowote wa maandishi wazi uliokaa pamoja na framing ya binary.
  • Kufanya kazi na firmware ya embedded. Probu za JTAG na SWD huripoti maudhui ya kumbukumbu kama hex. Kutafsiri eneo la kumbukumbu kwenye ASCII hugundua mifuatano iliyojumuishwa (njia za faili, ujumbe wa hitilafu, saini za mtoa huduma) ambazo mara nyingi hupiga hatua mahali ambapo katika firmware unazingatia.
  • Kusoma nakala za pakiti. Wireshark na tcpdump zote zinakuja na sehemu ya baiti inayochapisha kila pakiti kama hex upande wa kushoto na ASCII upande wa kulia. Kubadilisha kipande hapa hukuruhusu kunakili blob ya hex kutoka ripoti ya hitilafu au kumbukumbu ya mazungumzo na kusoma baiti zinasema nini hasa bila kuzileta tena kwenye zana ya kunasa.
  • Tofauti za kiwango cha baiti. Kulinganisha faili mbili za binary mara nyingi kunakuja kwenye kugundua baiti zilizobadilika. Kubadilisha pande zote mbili kwenye hex na makundi thabiti hufanya tofauti iulinganike kwenye mhariri wa maandishi, ambapo zana ya tofauti iliyojengwa ndani inaweza kuangazisha baiti zilizobadilika.

Matumizi ya kawaida

Ubadilishaji wa Hex ↔ ASCII huonekana kwenye uhandisi wa nyuma, usalama, na kazi ya embedded kila wakati mkondo wa baiti ni zaidi ya mzigo wa maandishi tu.

  • Uhandisi wa nyuma: chukua madumpio ya hex kutoka binary inayopinga mifuatano, chagua mfululizo unaosimbuka kama ASCII inayoweza kuchapishwa, na utumie mifuatano hiyo kuweka nanga mahali ulipo kwenye uchambuzi.
  • Uchunguzi wa mtandao: nakili mzigo mmoja wa pakiti kutoka Wireshark kama hex, uibandike hapa, na usoma maandishi ya safu ya programu bila kuhamisha kunasa yote.
  • Ushughulikiaji wa nyenzo za kriptografia: ufunguo, IV, au lebo ya HMAC mara nyingi hutumwa kama mfuatano wa hex. Kusimbua kurudi kwenye baiti kuthibitisha urefu unalingana na algorithm (baiti 16 kwa AES-128, 32 kwa AES-256) kabla ya kuuingiza kwenye usanidi.

Mfano uliofanyiwa kazi

Chagua Maandishi → Hex, UTF-8, herufi ndogo, makundi ya Nafasi-kwa-kila-baiti, kiambishi awali kimezimwa. Andika Hi: matokeo yanasomeka 48 69. Washa kiambishi awali na ubadilishe makundi kwenye Hakuna na ingizo lile lile linawakilishwa kama 0x4869. Bandika emoji 😀 kama ingizo na hali ya UTF-8 inawakilisha f0 9f 98 80 — baiti nne kwa nambari ya msimbo moja, ndiyo maana emoji mara nyingi huongeza ukubwa wa uhamishaji. Badilisha kwenye Hex → Maandishi na ubandike 0x48-65-6C 6C 6F: mchambua huondoa kiambishi awali, dashi, na nafasi na hujenga tena Hello.

FAQ

Usimbuaji wa hex ni nini?

Usimbuaji wa hex (au usimbuaji wa hexadecimali) huandika mkondo wa baiti katika msingi 16, herufi mbili za ASCII kwa baiti. Kila tarakimu ya hex inashughulikia biti nne, kwa hivyo tarakimu mbili zinashughulikia baiti moja ya biti nane. Alfabeti inaendesha 0-9 kisha A-F (au a-f); hali ni chaguo tu la uwasilishaji na wasimbua wanakubali yoyote. Hex ni njia ya kawaida ya kuandika baiti ghafi katika maelezo ya itifaki, matokeo ya debugger, na funguo za kriptografia kwa sababu ni mara mbili ndogo zaidi kuliko binary na inaepuka matatizo ya herufi zisizoweza kuchapishwa za baiti ghafi kwenye maandishi.

Kwa nini emoji yangu inakuwa baiti 4 katika hex?

UTF-8 ni usimbuaji wa urefu unaobadilika. Herufi za ASCII (U+0000 hadi U+007F) huchukua baiti moja, nyongeza za Latin-1 huchukua mbili, nambari nyingi za msimbo za BMP huchukua tatu, na herufi zaidi ya U+FFFF — ikiwa ni pamoja na emoji nyingi — huchukua nne. Uso wa kutabasamu 😀 ni U+1F600 na husimbwa kwenye F0 9F 98 80. Ukihitaji mtazamo wa baiti ya upana uliowekwa, badilisha kwenye Latin-1 — lakini Latin-1 inashughulikia nambari za msimbo 256 za kwanza tu, kwa hivyo herufi yoyote nje ya safu hiyo haiwezi kusafiriana.

Je, hii inasaidia Latin-1 / ISO-8859-1?

Ndio. Badilisha chaguo la Usimbuaji wa Maandishi kwenye Latin-1 (ISO-8859-1). Usimbuaji huchukua biti nane za chini za kila kitengo cha msimbo cha JavaScript (charCodeAt(0) & 0xFF), ambayo inalingana na upangaji wa byte moja wa urithi. Usimbuzi hutumia String.fromCharCode(byte) kwa kila baiti. Tumia Latin-1 unapofanya kazi na matokeo kutoka kwa mifumo ya zamani ya Windows-1252 au kabla ya Unicode ambapo kila baiti inawakilisha herufi moja hasa.

Je, ubadilishaji unafanyika kwenye kivinjari changu?

Ndio. Kibadilishi kinaendesha TextEncoder, TextDecoder, na mchambua mdogo kama ukurasa mmoja tuli. Hakuna kupakia, hakuna wito wa API, na hakuna uchambuzi wa kile unachobandika — takwimu za upakiaji wa ukurasa wa kawaida tu zinazoshirikiwa kwenye tovuti. Baiti sawa za hex unazoona hapa ndizo ambazo hati ya Node au kazi ya Lambda ingehuliza dhidi ya ingizo lile lile.

Ubadilishaji wa Hex ↔ ASCII ni kazi ndogo ambayo mtu yeyote anayesoma itifaki za binary au firmware ya embedded hufanya mara kadhaa kwa siku. Kuifanya kwenye kichupo cha kivinjari, na encoders sawa za asili ambazo Node na V8 tayari zinakuja nazo, huhifadhi kazi kuwa ya haraka na mkondo wa baiti kwenye mashine yako.