2013-04-06 4 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

С оператором "остаточным", пишется Mod в Visual Basic:

offset Mod &H10000 
3

Ответ с помощью оператора в 'Mod' является правильным.

Но, чтобы быть педантичным, это оператор «модуль», а не оператор «остатка». Существует разница для отрицательных чисел. (Я понимаю, мы не говорим о отрицательных чисел здесь.)

См What's the difference between “mod” and “remainder” ?

+3

На самом деле связано определение MSDN МОД говорит, что удивительно, что это остаток, но не обсуждать отрицательные числа. Хороший момент, чтобы поднять его - хотя ваш ответ, вероятно, лучше подходит для комментариев. –