如何从一个or标志中检索回值
how to retrieve back values from an ORed flag
假设我正在处理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个标志,我对它们进行or/and,然后最终会得到一些复杂的数字,我如何才能检索用于组成该数字的标志?
二进制与运算可用于测试单个位(即标志)。
例如bool b = (value & GENERIC_READ) != 0;
如果先前将GENERIC_READ放入值中,则的计算结果为true,而不管组合了什么其他标志。
如果这还不能很好地解释它,那么http://en.wikipedia.org/wiki/Bitwise_operation#AND可能会有所帮助。
相关文章:
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 即使使用调试编译标志,表达式也是"optimized out"
- 在 CMake 中为每个目标设置编译器/链接器标志
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- 在轮班操作后使用携带标志
- 如何找出引入AVX标志的内容
- 模式"allocate memory or use existing data"
- N-API include an .so or dll
- I2C 文件描述符上的 I2C 总线可写/可读标志
- C ++是否有C ++ 17 OSX 10.13.6的标志
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 每次使用带有LOCK_EX标志的LOCK_NB时,相同的程序/进程都会获取锁
- 将 OR 逻辑运算符从 C++ 转换为 Fortran
- CPP 中的瓦尔格林德和记忆泄漏:"Conditional jump or move depends on uninitialised values"
- CMake 3.5 中的链接器标志位置
- 如何使用 gnu gcc 标志 -mpc32、-mpc64 和 -mpc80?
- 如何从一个or标志中检索回值