假设我正在处理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”,我需要知道它包含哪些访问,我应该对这个数字做什么操作? / p>
我的观点是,如果我有大约100个标志并且我对它们进行OR运算和结果,那么最终会出现一些复杂的数字,我怎样才能检索用于编写该数字的标志?
答案 0 :(得分:1)
二进制AND运算可用于测试各个位(即标志)。
例如
bool b = (value & GENERIC_READ) != 0;
如果GENERIC_READ与之前的值进行OR运算,则的计算结果为true,无论其他标志组合在一起。
如果这不能很好地解释,那么http://en.wikipedia.org/wiki/Bitwise_operation#AND可能会有所帮助。