2008-09-26 21 views
17

मैंने हेक्स कार्यशाला डाउनलोड की, और मुझे एक .dbc फ़ाइल पढ़ने के लिए कहा गया था।क्या कोई मुझे हेक्स ऑफ़सेट समझा सकता है?

यह 28,315 को शामिल करना चाहिए अगर आप पढ़ ऑफसेट 0x04 और 0x05

मैं ऐसा करने के तरीके को लेकर अनिश्चित हूं? 0x04 का क्या अर्थ है?

+5

यह प्रश्न क्यों चिह्नित किया गया है? यह एक बिल्कुल वैध सवाल है। –

+0

देखें कि उचित प्रश्न के साथ आपको कितने बेहतर गुणवत्ता वाले उत्तर मिलते हैं? – GEOCHET

उत्तर

9

0x04 4 के लिए हेक्स है (0x संख्याओं के आधार 16 प्रतिनिधित्व के लिए सिर्फ एक आम उपसर्ग सम्मेलन है - क्योंकि बहुत से लोग दशमलव में सोचते हैं), और यह चौथा बाइट होगा (क्योंकि वे ऑफसेट कह रहे हैं, वे शायद गिनते हैं बाइट 0 के रूप में पहला बाइट, इसलिए ऑफसेट 0x04 5 वां बाइट होगा)।

मुझे लगता है कि वे कह रहे हैं कि 4 और 5 वीं बाइट एक साथ 28315 होगा, लेकिन वे कहते हैं कि अगर इस छोटे-endian या बड़े endian है?

28315 (दशमलव) हेक्साडेसिमल नोटेशन में 0x6E9B है, शायद 0x9B 0x6E क्रम में फ़ाइल में अगर यह थोड़ा-अंत है।

नोट: लिटिल-endian और बड़े endian आदेश बाइट्स लिखा जाता है का संदर्भ लें। मनुष्य ठेठ लिखने दशमलव संकेतन और हेक्साडेसिमल एक बड़े endian तरह से है, तो:

256 0x0100 रूप में लिखा जाएगा (बाईं ओर अंक सबसे बड़ी पैमाने कर रहे हैं)

लेकिन वह दो बाइट्स और थोड़ा-endian प्रणाली लेता है पहले बाइट पहले लिखेंगे: 0x00 0x01। बिग-एंडियन सिस्टम उच्च-बाइट पहले लिखेंगे: 0x01 0x00।

आमतौर पर इंटेल सिस्टम थोड़ा-endian कर रहे हैं और अन्य प्रणालियों बदलती हैं।

+0

@ ओरेगॉनहोस्ट: आशा है कि आपको कोई फर्क नहीं पड़ता, मुझे लगा कि आपका उत्तर उस उत्तर का हिस्सा बनने के लायक है। – GEOCHET

1

प्रारंभ here। एक बार जब आप हेक्साडेसिमल मानों को पढ़ना सीखें, तो आप वास्तव में अपनी समस्या का समाधान करने के लिए बहुत बेहतर आकार में होंगे।

1

हेक्स में 0x04 दशमलव में 4 है। हेक्स में 0x10 दशमलव में 16 है। calc.exe हेक्स और दशमलव के बीच आपके लिए कनवर्ट कर सकते हैं।

ऑफसेट 4 का मतलब है फ़ाइल की शुरुआत से 4 बाइट। ऑफ़सेट 0 फ़ाइल में पहला बाइट है।

2

यह 4 और 5 एक्स एक्स कोड आपके देखने ...

 
1 2 3 4 5 6 
01 AB 11 7B FF 5A 

तो, 0x04 और 0x05 "7 बी" और "एफएफ" है।

मान लें कि आप क्या कह रहे हैं, आपके मामले में 7BFF अपने वांछित मूल्य के बराबर होना चाहिए।

HTH बाइट्स 4 में

1

देखो और पांच वे मान 0x6E 0x9B (या 0x9B 0x6E) अपने endianess के आधार पर होना चाहिए।

2

बाइट्स की रैखिक सरणी के रूप में एक बाइनरी फ़ाइल के बारे में सोचें।

0x04 सरणी में 5 वां (0 आधारित सरणी में) तत्व होगा, और 0x05 6 वां होगा।

0x04 और 0x05 में दो मानों को 28,315 संख्या बनाने के लिए एक साथ किया जा सकता है।

int value = (ByteArray[4] >> 8) | ByteArray[5]); 
:

के बाद से मूल्य आप पढ़ रहे हैं 16 बिट है, तो आप के ऊपर और फिर एक मूल्य bitshift करने या उन्हें एक साथ, की जरूरत है यानी अगर आप सी # में फ़ाइल से छेड़छाड़ कर रहे थे, तो आप कुछ इस तरह का प्रयोग करेंगे

उम्मीद है कि यह हेक्स पते को कैसे काम करता है यह समझाने में मदद करता है।

संबंधित मुद्दे