2013-04-06 20 views
2

我正在研究一個包含Z80雙字節指針轉換器的專業十六進制編輯器。如何在VB.NET中將十六進制偏移量轉換爲雙字節指針?

轉換背後的數學是像這樣:

  1. 採取偏移要指向。
  2. 取出偏移量的最後四位數字,然後切除其餘部分。
  3. 如果偏移超出範圍&H4000 - &H7FFF,它必須如此轉換:(offset % &H4000) + &H4000。換句話說:
    • 如果偏移量從&H0000&H3FFF,請將&H4000添加到偏移量。
    • 如果偏移量從&H4000&H7FFF,不要對偏移量做任何事情。
    • 如果偏移量從&H8000&HBFFF,則從偏移量中減去&H4000
    • 如果偏移量從&HC000&HFFFF,則從偏移量中減去&H8000

我的問題是我不知道我怎麼可以把一個5或6位十六進制偏移量兩位數的偏移。我如何在開始時削減多餘的字節(第二步)?

回答

4

隨着 「剩女」 操作,在Visual Basic中拼寫Mod

offset Mod &H10000 
3

使用 '國防部' 運營商的答案是正確的。

但是,爲了迂迴,這是一個「模數」運算符,而不是「餘數」運算符。負數有區別。 (我明白,我們不是在談論負數這裏。)

What's the difference between 「mod」 and 「remainder」 ?

+3

其實國防部的鏈接MSDN定義說,奇怪的是,這是其餘的,但後來不討論負數。好點提出它 - 雖然你的答案可能更適合作爲評論。 – 2013-04-06 21:55:44

相關問題