如何在VB.NET中将十六进制偏移量转换为两字节指针?
我正在开发一个特殊的十六进制编辑器,其中包括一个Z80双字节指针转换器 转换背后的数学原理如下:如何在VB.NET中将十六进制偏移量转换为两字节指针?,vb.net,pointers,hex,z80,Vb.net,Pointers,Hex,Z80,我正在开发一个特殊的十六进制编辑器,其中包括一个Z80双字节指针转换器 转换背后的数学原理如下: 取要指向的偏移量 取偏移量的最后四位,并剪掉其余的 如果偏移量超出范围&H4000-&H7FFF,则必须按如下方式转换:(偏移量%&H4000)+&H4000。换言之: 如果偏移量从&H0000到&H3FFF,则将&H4000添加到偏移量 如果偏移量是从&H4000到&H7FFF,请不要对偏移量进行任何操作 如果偏移量是从&H8000到&HBFFF,则从偏移量中减去&H4000 如果偏移量是从&H
&H4000
-&H7FFF
,则必须按如下方式转换:(偏移量%&H4000)+&H4000
。换言之:
- 如果偏移量从
到&H0000
,则将&H3FFF
添加到偏移量&H4000
- 如果偏移量是从
到&H4000
,请不要对偏移量进行任何操作&H7FFF
- 如果偏移量是从
到&H8000
,则从偏移量中减去&HBFFF
&H4000
- 如果偏移量是从
到&HC000
,则从偏移量中减去&HFFFF
&H8000
offset Mod &H10000
使用“Mod”运算符的答案是正确的 但是,学究式地说,这是一个“模”运算符,而不是“余数”运算符。负数是有区别的。(我很感激我们这里不是在谈论负数。)
参见实际上,链接的MSDN对Mod的定义令人惊讶地说,它是余数,但没有讨论负数。提出这个问题很有道理——尽管你的答案可能更适合作为评论。