टेक्स्ट से षोडशआधारी: ट्रेस में बाइट जिस रूप में दिखते हैं
यह रूपांतरण क्या करता है
यह टेक्स्ट को UTF-8 में एन्कोड करके हर बाइट को दो हेक्स अंकों में छापता है। यही लिपि पैकेट कैप्चर, मेमोरी व्यूअर और प्रोटोकॉल लॉग में दिखती है, इसलिए यह रूपांतरण असल में उस चीज़ के बीच अनुवाद है जो इंसान टाइप करता है और जो उसके औज़ार दिखाते हैं।
हर बाइट के दो अंक, हमेशा
एक बाइट 0 से 255 तक के मान रखती है, और दो हेक्स अंक ठीक उतना ही दायरा भर देते हैं — 00 से FF तक। यह जोड़ी कभी नहीं बदलती, इसीलिए हेक्स डंप नज़र से पढ़ा जा सकता है: बाइट गिनने के लिए जोड़ियाँ गिनें, और बाईं ओर का ऑफ़सेट कॉलम बताता है कि आप कौन-सी जोड़ी पर हैं। आठ अक्षरों की स्ट्रिंग आठ जोड़ियाँ होती है, और कोई अक्षर आधी जोड़ी नहीं बना सकता।
टेक्स्ट से षोडशआधारी तालिका
छोटी स्ट्रिंग और उनके हेक्स बाइट मान। विराम चिह्न और अंक एक ही जोड़ी में अपना ASCII मान बन जाते हैं, जबकि लातिनी वर्णमाला से बाहर की हर चीज़ कई जोड़ियों तक फैल जाती है।
| टेक्स्ट | षोडशआधारी |
|---|---|
| A | 41 |
| Hi | 48 69 |
| OK | 4F 4B |
| 123 | 31 32 33 |
| ! | 21 |
| Go | 47 6F |
कैप्चर के भीतर स्ट्रिंग ढूँढ़ना
पैकेट कैप्चर में पढ़ने लायक टेक्स्ट खोजना शायद ही चलता है, क्योंकि तार पर बाइट होती हैं और आपने अक्षर टाइप किए थे। जिस स्ट्रिंग को ढूँढ़ना है उसे हेक्स में बदलने पर खोजने का ठीक क्रम मिल जाता है, और यह भी दिख जाता है कि नुक्ता वाले नाम की खोज क्यों नाकाम होती है जबकि बिना नुक्ता वाली चल जाती है: एन्कोड किए रूपों की लंबाई ही अलग होती है, सिर्फ़ अक्षर नहीं।
विभाजक का ध्यान रखें
यह टूल पढ़ने की सुविधा के लिए बाइटों के बीच स्पेस डालता है, जबकि कई कैप्चर और URL अंकों को जोड़कर या प्रतिशत चिह्न के साथ लिखते हैं। खोजते समय स्पेस हटाएँ या उन्हें अपने औज़ार के विभाजक में बदलें — एक नज़र में एक जैसा दिखने वाला क्रम सिर्फ़ खाली जगहों की वजह से मेल नहीं खाता।
अक्सर पूछे जाने वाले सवाल
टेक्स्ट को हेक्स में हाथ से कैसे बदलें?
हर अक्षर का UTF-8 बाइट मान देखें और उसे दो हेक्स अंकों में लिखें। "Hi" पर यह 48 और 69 बनता है। ASCII दायरे से बाहर के अक्षरों के लिए कोड बिंदु नहीं बल्कि बाइट मान चाहिए, क्योंकि एक अक्षर कई बाइट ले सकता है।
हेक्स और द्विआधारी नतीजे में क्या फ़र्क़ है?
लिखने के तरीके के अलावा कोई नहीं। दोनों वही UTF-8 बाइट एन्कोड करते हैं; हेक्स हर बाइट को दो अंकों में लिखता है और द्विआधारी आठ में, इसलिए हेक्स चार गुना छोटा और पढ़ने में कहीं आसान है। पढ़ने के लिए हेक्स चुनें और अलग-अलग बिट देखने हों तो द्विआधारी।
मेरा नुक्ता वाला अक्षर दो बाइट क्यों बन जाता है?
क्योंकि UTF-8 मूल ASCII दायरे से ऊपर की हर चीज़ को एक से ज़्यादा बाइट में एन्कोड करता है, और ज़्यादातर नुक्ता वाली लातिनी अक्षर दो लेती हैं। यह सामान्य है, कोई ख़राबी नहीं — अक्षर बस उस दायरे से बाहर है जहाँ एक बाइट पहुँचती है, और हर बाइट गिनने वाला उसे दो ही देखेगा।
क्या यह वही एन्कोडिंग है जो URL इस्तेमाल करता है?
संबंधित है, बिल्कुल एक नहीं। प्रतिशत-एन्कोडिंग UTF-8 बाइट को हर जोड़ी से पहले प्रतिशत चिह्न के साथ लिखती है, इसलिए बाइट मान इस टूल से ठीक मेल खाते हैं और सिर्फ़ विराम चिह्न का फ़र्क़ रह जाता है। यहाँ हेक्स में बदलने पर प्रतिशत-एन्कोड करने लायक सही बाइट मिल जाती हैं।
क्या नतीजा बाइट ऐरे लिटरल में इस्तेमाल कर सकता हूँ?
हाँ। अंक ठीक बाइट मान हैं, इसलिए हर जोड़ी के आगे 0x लगाने पर ज़्यादातर प्रोग्रामिंग भाषाओं के लिए लिटरल बन जाता है। टूल चलन के हिसाब से ऊपरी केस छापता है; जहाँ भी चिपकाएँ, छोटे अक्षर भी उतने ही वैध हैं।