2008-09-26 372 views
17

我下載了Hex Workshop,並被告知要讀取.dbc文件。有人可以向我解釋十六進制偏移嗎?

它應該包含28315如果你讀 偏移值0x04和0x05中

我不確定如何做到這一點? 0x04是什麼意思?

+5

爲什麼這個問題被標記下來?這是一個完全有效的問題。 – 2008-09-26 19:02:37

+0

看到一個正確的問題,你得到了多少更好的質量答案? – GEOCHET 2008-09-26 19:02:59

回答

9

0×04是4個十六進制(該0X僅僅是數字的基數爲16表示一個共同的前綴約定 - 因爲很多人認爲十進制),這將是第四個字節(因爲他們所說的偏移,他們大概算第一個字節爲字節0,所以偏移量0x04將是第五個字節)。

我猜他們說,第4和第5個字節在一起會是28315,但沒有他們說,如果這是小端還是大端?

28315(十進制)是0x6E9B十六進制表示,可能在爲了0x9B 0x6E文件,如果是小端。

注意:Little-endian和big-endian是指寫入順序字節。人類典型的寫十進制表示和十六進制在大端方式,所以:

256將被寫爲0100(左邊的數字是規模最大)

但是,這需要兩個字節和little-endian系統將首先寫入低字節:0x00 0x01。大端系統將首先寫入高位字節:0x01 0x00。

典型的英特爾系統是小端系統,其他系統也不盡相同。

1

開始here。一旦你學會了如何讀取十六進制值,你將會更好地解決你的問題。

1

十六進制中的0x04是十進制的4。十六進制中的0x10是十進制的16。 calc.exe可以在十六進制和十進制之間進行轉換。

偏移4意味着從文件開始的4個字節。偏移量0是文件中的第一個字節。

2

這是第4和第5 XX代碼的可視...

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

因此,爲0x04 0x05中是 「7B」 和 「FF」。

假設你在說什麼,你的情況7BFF應等於所需的值。

HTH

1

看字節4,五他們應該根據您的字節序值0x6E 0x9B(或0x9B 0x6E)。

2

將二進制文件視爲線性字節數組。

0x04訪問將是第五(在0基於數組)的數組中的元素,和爲0x05將是第六。

在0×04 0×05和這兩個值可以被進行或運算在一起以產生數28315。

既然你正在閱讀的值是16位的,你需要通過再位位移一個值,或將它們在一起,也就是說,如果你在操縱在C#中的文件,你會使用這樣的:

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

希望這有助於解釋十六進制地址如何工作。

相關問題