Я пытаюсь замаскировать адрес в C ++. Это то, что я пробовал.
INT32 * myaddr = (INT32*)addr; // This converted 'addr' to the hexadecimal format -- 'myaddr'
Теперь, как мне and
это 0xff00?
UINT32 sec_addr = (myaddr & 0xff);
Когда я пытаюсь сделать следующее ..
Это ошибка, которую я получаю:
error: invalid operands of types ‘LEVEL_BASE::INT32*’ and ‘int’ to binary ‘operator&’
Какую ошибку я делаю?
Вы управляете указателем с целым числом. Используйте оригинал addr
переменная, которая является целым числом, а не myaddr
:
UINT32 sec_addr = addr & 0xff; // according to your question, this should be 0xFF00
Кстати: ваша первая строка:
INT32 * myaddr = (INT32*)addr; // This converted 'addr' to the hexadecimal format -- 'myaddr'
не конвертируется addr
в «шестнадцатеричный формат». Шестнадцатеричный — это просто способ представления числа при его печати. И то и другое addr
а также myaddr
может быть показано в любой числовой базе вы хотите.
printf ("%d %X\n", addr, addr);
печатает значение addr
в десятичном и шестнадцатеричном формате.
Первая строка должна быть
INT32 myaddr = (INT32)addr;
Предполагая, что вы находитесь на 32-битной платформе.