我试着用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 :(得分:2)
您正在操作带整数的指针。使用原始addr
变量,这是一个整数,而不是myaddr
:
UINT32 sec_addr = addr & 0xff; // according to your question, this should be 0xFF00
BTW:你的第一行:
INT32 * myaddr = (INT32*)addr; // This converted 'addr' to the hexadecimal format -- 'myaddr'
不会将addr
转换为"十六进制格式"。十六进制只是一种在打印时表示数字的方法。 addr
和myaddr
都可以显示在您想要的任何数字基础中。
printf ("%d %X\n", addr, addr);
以十进制和十六进制格式打印addr
的值。
答案 1 :(得分:0)
第一行应该是
INT32 myaddr = (INT32)addr;
假设您使用的是32位平台。