2010-05-17 18 views
26

मैं यूनिक्स हेक्सडंप उपयोगिता के साथ खेल रहा हूं। मेरी इनपुट फ़ाइल यूटीएफ -8 एन्कोडेड है, जिसमें एकल वर्ण ñ है, जो हेक्साडेसिमल यूटीएफ -8 में C3 B1 है।हेक्सडंप भ्रम

hexdump test.txt 
0000000 b1c3 
0000002 

हुह? यह B1 C3 दिखाता है - जो मैंने अपेक्षित था उससे उलट! क्या कोई समझा सकता है?

उम्मीद उत्पादन हो रही है के लिए मुझे क्या करना:

hexdump -C test.txt 
00000000 c3 b1            |..| 
00000002 

मैं सोच रहा था मैं एन्कोडिंग प्रणाली को समझने ..

+3

http://en.wikipedia.org/wiki/Endianness – Konerak

उत्तर

36

इसका कारण यह है hexdump चूक 16-बिट शब्दों का प्रयोग करने के लिए है और आप एक छोटे से पर चल रहे हैं -एंडियन वास्तुकला। बाइट अनुक्रम b1 c3 इस प्रकार हेक्स शब्द c3b1 के रूप में व्याख्या किया जाता है। -C विकल्प हेक्सडम्प को शब्दों के बजाए बाइट्स के साथ काम करने के लिए मजबूर करता है।

hexdump -C file 

या

od -tx1 < file 

मुझे लगता है कि यह बेवकूफ है hexdump फैसला किया है कि कि फ़ाइलें आमतौर पर 16bit शब्द थोड़ा endian हैं:

+0

मैं सोच रहा था कि इसमें अंतहीनता के साथ कुछ करना होगा। – zedoo

+3

लेकिन क्यों हेक्सडम्प इस भ्रमित आउटपुट प्रारूप में डिफ़ॉल्ट है? क्या कोई ऐतिहासिक कारण है? – accuya

+3

भ्रमित करने वाला क्या है मनुष्यों के लिए बड़े-अंत क्रम में संख्याओं को एन्कोड करने की प्रवृत्ति है। लिटिल-एंडियन अधिक तार्किक है, यही कारण है कि यह अजीबता के बावजूद x86 समेत कई सीपीयू आर्किटेक्चर पर उपयोग किया जाता है। –

1

मैं दो तरीकों से बचने के लिए मिल गया। बहुत भ्रमित आईएमओ।