Как использовать битовую маску в C ++?

Я пытаюсь замаскировать адрес в 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&’

Какую ошибку я делаю?

0

Решение

Вы управляете указателем с целым числом. Используйте оригинал 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 в десятичном и шестнадцатеричном формате.

2

Другие решения

Первая строка должна быть

INT32 myaddr = (INT32)addr;

Предполагая, что вы находитесь на 32-битной платформе.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector