1

假设我正在处理 CreateFileA

我有

Public Const GENERIC_ALL As Int32 = &H10000000
Public Const GENERIC_READ As Int32 = &H80000000
Public Const GENERIC_WRITE As Int32 = &H40000000
Public Const GENERIC_EXECUTE As Int32 = &H20000000

因此这意味着如果我需要读写我会做

GENERIC_READ | GENERIC_WRITE = 0C0000000h

API如何反转OR操作以知道它包含哪些标志?换句话说,假设我得到了那个值“0C0000000h”,我需要知道它包含什么访问,我应该对这个数字做什么操作?

我的观点是,如果我有大约 100 个标志并且我对它们进行了 ORed/AND 运算,那么最终会得到一些复杂的数字,我如何检索用于组成该数字的标志?

4

1 回答 1

1

二进制 AND 操作可用于测试单个位(又名标志)。

例如

bool b = (value & GENERIC_READ) != 0;

如果 GENERIC_READ 与之前的值进行了 OR 运算,则计算结果为 true,而不管组合了哪些其他标志。

如果这不能很好地解释它,那么也许http://en.wikipedia.org/wiki/Bitwise_operation#AND会有所帮助。

于 2014-06-20T23:23:54.957 回答