Hex encoding कसे कार्य करते
पेजवरील प्रत्येक अक्षर एक किंवा अधिक bytes म्हणून stored आहे. Hex encoding ते bytes base 16 मध्ये पुन्हा लिहितो, प्रति byte दोन characters, जेणेकरून byte stream विशेष tools शिवाय वाचता येतो.
- मजकूर bytes मध्ये encode करा. UTF-8 मोड इनपुट
new TextEncoder().encode(text)मधून चालवतो, जो byte values चाUint8Arrayपरत करतो. Latin-1 मोड प्रत्येक code unit चे low eight bitscharCodeAt(0) & 0xFFद्वारे घेतो, जे legacy ISO-8859-1 codecs करतात तेच रूपांतरण आहे. - प्रत्येक byte दोन hex digits म्हणून render करा. प्रत्येक byte
byte.toString(16).padStart(2, "0")द्वारे दोन hex digits शी map होतो. Case toggle आउटपुट अक्षरांवर uppercase (A-F) किंवा lowercase (a-f) निवडतो. - Grouping आणि prefix लागू करा. Grouping bytes दरम्यान separator टाकतो: एकच स्पेस, dash किंवा प्रत्येक चार bytes नंतर स्पेस. 0x prefix संपूर्ण string ला एकदा (None grouping) किंवा प्रति byte (Space grouping) prepend केला जाऊ शकतो, C arrays आणि binary diff tools ज्या conventions अपेक्षित करतात त्याशी जुळवून.
- उलट decode करा. Hex → मजकूर मोड इनपुटमधून प्रत्येक स्पेस, dash आणि
0xprefix काढतो, उर्वरित characters/^[0-9a-fA-F]+$/विरुद्ध validate करतो, odd-length strings नाकारतो आणि successive byte pairs मधूनUint8Arrayपुन्हा बांधतो. UTF-8 मोडnew TextDecoder("utf-8", { fatal: true })ने ते array decode करतो; Latin-1 मोड प्रत्येक byte लाString.fromCharCode(b)शी map करतो. - जलद iteration साठी लाइव्ह मोड. लाइव्ह मोड डिफॉल्टने चालू आहे. प्रत्येक keystroke 150 ms debounced re-convert schedule करते जेणेकरून Convert बटण click न करता पेस्ट करा, edit करा आणि दुसरा pane update होताना पाहा.
Hex converter का वापरावा
- Binary protocols debug करा. Modbus, DNP3 आणि CoAP सारखे wire formats त्यांचे headers specific byte offsets मध्ये pack करतात. Captured frame hex म्हणून वाचल्याने प्रत्येक field एका दृष्टिक्षेपात दिसतो, आणि त्याच bytes ASCII मध्ये flip केल्यावर binary framing सोबत बसलेला कोणताही plaintext payload दिसतो.
- Embedded firmware सह काम करा. JTAG आणि SWD probes memory contents hex म्हणून report करतात. Memory च्या एका region चे ASCII मध्ये translation embedded strings (file paths, error messages, vendor signatures) spot करते जे अनेकदा firmware मध्ये तुम्ही कुठे पाहत आहात ते दर्शवतात.
- Packet captures वाचा. Wireshark आणि tcpdump दोन्ही byte pane सोबत येतात जे प्रत्येक packet डाव्या बाजूला hex आणि उजव्या बाजूला ASCII म्हणून print करतात. येथे snippet रूपांतरित केल्याने bug report किंवा chat log मधून hex blob copy करता येतो आणि capture tool मध्ये re-import न करता bytes खरोखर काय म्हणतात ते वाचता येते.
- बाइट-स्तरीय फरक. दोन binary files compare करणे अनेकदा कोणते bytes बदलले ते spot करण्यावर येते. दोन्ही बाजू consistent grouping सह hex मध्ये रूपांतरित केल्याने text editor मध्ये diff line up होतो, जिथे built-in diff tool बदललेले bytes highlight करू शकतो.
सामान्य वापर
Hex ↔ ASCII रूपांतरण reverse engineering, security आणि embedded कामात जेव्हा byte stream फक्त text payload पेक्षा जास्त असतो तेव्हा दिसते.
- Reverse engineering: strings-resistant binary मधून hex dump घ्या, printable ASCII म्हणून decode होणारे runs निवडा आणि disassembly मध्ये तुम्ही कुठे आहात ते anchor करण्यासाठी ते strings वापरा.
- Network forensics: Wireshark मधून single packet payload hex म्हणून copy करा, येथे पेस्ट करा आणि संपूर्ण capture export न करता application-layer मजकूर वाचा.
- Crypto material handling: key, IV किंवा HMAC tag अनेकदा hex string म्हणून येतो. Bytes परत decode केल्याने config मध्ये wire करण्यापूर्वी length algorithm शी जुळते (AES-128 साठी 16 bytes, AES-256 साठी 32) हे confirm होते.
एक काम केलेले उदाहरण
मजकूर → Hex, UTF-8, lowercase, Space-every-byte grouping, prefix off निवडा. Hi टाइप करा: आउटपुट 48 69 वाचतो. Prefix चालू करा आणि grouping None मध्ये बदला आणि तेच इनपुट 0x4869 render करते. Emoji 😀 इनपुट म्हणून पेस्ट करा आणि UTF-8 मोड f0 9f 98 80 render करतो — एका code point साठी चार bytes, म्हणूनच emoji transmission size वाढवतात. Hex → मजकूर मध्ये switch करा आणि 0x48-65-6C 6C 6F पेस्ट करा: parser prefix, dashes आणि spaces काढतो आणि Hello पुन्हा बांधतो.
FAQ
Hex encoding म्हणजे काय?
Hex encoding (किंवा hexadecimal encoding) byte stream ला base 16 मध्ये, प्रति byte दोन ASCII characters, लिहितो. प्रत्येक hex digit चार bits cover करतो, त्यामुळे दोन digits एक आठ-बिट byte cover करतात. Alphabet 0-9 नंतर A-F (किंवा a-f) चालतो; case पूर्णपणे presentation निवड आहे आणि decoders दोन्ही स्वीकारतात. Hex protocol specs, debugger output आणि crypto keys मध्ये raw bytes लिहिण्याचा standard मार्ग आहे कारण ते binary पेक्षा दुप्पट compact आहे.
माझा emoji hex मध्ये 4 bytes का बनतो?
UTF-8 variable-length encoding आहे. ASCII characters (U+0000 ते U+007F) एक byte घेतात, Latin-1 supplements दोन, BMP code points तीन आणि U+FFFF वरील characters — बहुतेक emoji सह — चार घेतात. Smiling face 😀 हे U+1F600 आहे आणि F0 9F 98 80 ला encode होते. Fixed-width byte view आवश्यक असल्यास, Latin-1 वर switch करा — पण Latin-1 फक्त पहिले 256 code points cover करतो.
हे Latin-1 / ISO-8859-1 support करते का?
होय. Text encoding पर्याय Latin-1 (ISO-8859-1) मध्ये switch करा. Encoding प्रत्येक JavaScript code unit चे low eight bits (charCodeAt(0) & 0xFF) घेतो, जे legacy single-byte mapping शी जुळते. Decoding प्रत्येक byte साठी String.fromCharCode(byte) वापरतो. Latin-1 वापरा जेव्हा तुम्ही जुन्या Windows-1252 किंवा pre-Unicode systems च्या आउटपुटसह काम करत असाल जिथे प्रत्येक byte एका character साठी असतो.
रूपांतरण माझ्या ब्राउझरमध्ये होते का?
होय. Converter TextEncoder, TextDecoder आणि एक छोटा parser एकाच static page म्हणून चालवतो. कोणतेही upload, API call नाही आणि तुम्ही पेस्ट करता त्यावर analytics नाही — फक्त साइटवर shared standard page-load metrics. येथे दिसणारे hex bytes Node script किंवा Lambda function त्याच इनपुटवर produce करेल तेच आहेत.
Hex ↔ ASCII रूपांतरण एक छोटे काम आहे जे binary protocols किंवा embedded firmware वाचणारे कोणी दिवसातून अनेक वेळा करतात. Browser tab मध्ये, Node आणि V8 आधीच ship करणाऱ्या त्याच native encoders सह करणे काम जलद ठेवते आणि byte stream तुमच्या machine वर ठेवते.