如何在 c++ 中使用位掩码

How to use bitmask in c++?

本文关键字:掩码 c++      更新时间:2023-10-16

我正在尝试屏蔽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转换为"十六进制格式"。十六进制只是打印数字时表示数字的一种方式。addrmyaddr都可以以您想要的任何数字基数显示。

printf ("%d %Xn", addr, addr);

以十进制和十六进制格式打印addr的值。

第一行应该是

INT32 myaddr = (INT32)addr;

假设您使用的是 32 位平台。