gpt4 book ai didi

c# - 如何从 ORed 标志中检索返回值

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:02 26 4
gpt4 key购买 nike

假设我正在处理 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 个标志,并且我对它们进行或运算/与运算,那么最终会得到一些复杂的数字,我如何才能检索用于组成该数字的标志?

最佳答案

二进制与运算可用于测试单个位(也称为标志)。

例如

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

如果 GENERIC_READ 与先前的值进行了或运算,则计算结果为真,而不管其他标志已被组合。

如果这还不够好,那么也许 http://en.wikipedia.org/wiki/Bitwise_operation#AND会有帮助。

关于c# - 如何从 ORed 标志中检索返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24336950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com