如何在VB.NET中将十六进制偏移量转换为双字节指针?

时间:2013-04-06 20:27:48

标签: vb.net pointers hex z80

我正在研究一种包含Z80双字节指针转换器的专业十六进制编辑器。

转换背后的数学是这样的:

  1. 取你想指的偏移量。
  2. 取偏移的最后四位数,然后切断其余部分。
  3. 如果偏移量超出范围&H4000 - &H7FFF,则必须按照以下方式进行转换:(offset % &H4000) + &H4000。换一种说法:
    • 如果偏移量从&H0000&H3FFF,请将&H4000添加到偏移量。
    • 如果偏移量从&H4000&H7FFF,请不要对偏移做任何事情。
    • 如果偏移量从&H8000&HBFFF,则从偏移量中减去&H4000
    • 如果偏移量从&HC000&HFFFF,则从偏移量中减去&H8000
  4. 我的问题是我不知道如何将5位或6位十六进制偏移量转换为两位数的偏移量。如何在开始时削减额外的字节(第二步)?

2 个答案:

答案 0 :(得分:4)

使用“remainder”运算符,在Visual Basic中拼写为Mod

offset Mod &H10000

答案 1 :(得分:3)

使用'Mod'运算符的答案是正确的。

但是,要迂腐,这是一个'模数'运算符,而不是'余数'运算符。负数存在差异。 (我很欣赏我们不是在谈论负数。)

请参阅What's the difference between “mod” and “remainder” ?