`
wyf
  • 浏览: 432618 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

按位或组合权限串

    博客分类:
  • C#
 
阅读更多
 public enum BindingFlags
    {
        // 摘要: 
        //     不指定绑定标志。
        Default = 0,
        //
        // 摘要: 
        //     指定当绑定时不应考虑成员名的大小写。
        IgnoreCase = 1,
        //
        // 摘要: 
        //     指定只应考虑在所提供类型的层次结构级别上声明的成员。 不考虑继承成员。
        DeclaredOnly = 2,
        //
        // 摘要: 
        //     指定实例成员将包括在搜索中。
        Instance = 4,
        //
        // 摘要: 
        //     指定静态成员将包括在搜索中。
        Static = 8,
        //
        // 摘要: 
        //     指定公共成员将包括在搜索中。
        Public = 16,
        //
        // 摘要: 
        //     指定非公共成员将包括在搜索中。
        NonPublic = 32,
        //
        // 摘要: 
        //     指定应返回层次结构上的公共静态成员和受保护的静态成员。 不返回继承类中的私有静态成员。 静态成员包括字段、方法、事件和属性。 不返回嵌套类型。
        FlattenHierarchy = 64,
        //
        // 摘要: 
        //     指定要调用一个方法。 它不能是构造函数或类型初始值设定项。
        InvokeMethod = 256,
        //
        // 摘要: 
        //     指定“反射”应该创建指定类型的实例。 调用与给定参数匹配的构造函数。 忽略提供的成员名。 如果未指定查找类型,将应用 (Instance |Public)。
        //     调用类型初始值设定项是不可能的。
        CreateInstance = 512,
        //
        // 摘要: 
        //     指定应返回指定字段的值。
        GetField = 1024,
        //
        // 摘要: 
        //     指定应设置指定字段的值。
        SetField = 2048,
        //
        // 摘要: 
        //     指定应返回指定属性的值。
        GetProperty = 4096,
        //
        // 摘要: 
        //     指定应设置指定属性的值。 对于 COM 属性,指定此绑定标志与指定 PutDispProperty 和 PutRefDispProperty 是等效的。
        SetProperty = 8192,
        //
        // 摘要: 
        //     指定应调用 COM 对象的 PROPPUT 成员。 PROPPUT 指定使用值的属性设置函数。 如果属性同时具有 PROPPUT 和 PROPPUTREF,而且需要区分调用哪一个,请使用
        //     PutDispProperty。
        PutDispProperty = 16384,
        //
        // 摘要: 
        //     指定应调用 COM 对象的 PROPPUTREF 成员。 PROPPUTREF 指定使用引用而不是值的属性设置函数。 如果属性同时具有 PROPPUT
        //     和 PROPPUTREF,而且需要区分调用哪一个,请使用 PutRefDispProperty。
        PutRefDispProperty = 32768,
        //
        // 摘要: 
        //     指定提供参数的类型必须与对应形参的类型完全匹配。 如果调用方提供一个非空 Binder 对象,则“反射”将引发异常,因为这意味着调用方正在提供的
        //     BindToXXX 实现将选取适当的方法。
        ExactBinding = 65536,
        //
        // 摘要: 
        //     未实现。
        SuppressChangeType = 131072,
        //
        // 摘要: 
        //     返回其参数计数与提供参数的数目匹配的成员集。 此绑定标志用于所带参数具有默认值的方法和带变量参数 (varargs) 的方法。 此标志应只与 System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[])
        //     一起使用。
        OptionalParamBinding = 262144,
        //
        // 摘要: 
        //     在 COM 互操作中用于指定可以忽略成员的返回值。
        IgnoreReturn = 16777216,
    }

 

 public enum DataFormType
    {
        /// <summary>
        /// 查找
        /// </summary>
         Search=0,
        /// <summary>
        /// 刷新
        /// </summary>
        Refresh=2,
        /// <summary>
        /// 增加
        /// </summary>
        Add=4,
        /// <summary>
        /// 修改
        /// </summary>
        Update=8,
        /// <summary>
        /// 删除
        /// </summary>
         Delete=16,
        /// <summary>
        /// 导出 
        /// </summary>
        Export=32,
        /// <summary>
        /// 导入
        /// </summary>
        Import=64
    }

 使用

.SetFormType(Fap.Controls.JqGrid.Enums.DataFormType.Add | Fap.Controls.JqGrid.Enums.DataFormType.Delete | Fap.Controls.JqGrid.Enums.DataFormType.Update)

 按位或

原理

 第一,2的8位二进制值为00000010

                 4的8位二进制值为00000100

                8的8位二进制值为00001000

第二,当对8和4进行按位或操作后,结果为:

                 4|8 = 12

                 00000100 |00001000 = 00001100

              为什么会是这样呢?在进行按位或操作时 00000001|00000001=00000001   ;00000001|00000000=1 ;00000000|00000000=00000000

              也就是说除了0|0结果是0外,其它运算结果的都是1

             所以    00000100 |00001000 = 00001100

            也就说上面的 purview = k2|k3 的二进制值结果是 purview =00000100 |00001000 =00001100了

第三,当对8和4进行按位与操作后,结果为:

               4&8=0

            00000100 &00001000 = 00000000

              同样为什么会是这样呢?在进行按位与操作时 00000001&00000001=00000001   ;00000001&00000000=00000000 ;00000000&00000000=00000000

            也就是说除了1&1结果是1外,其它运算结果的都是0

            所以 00000100 &00001000 = 00000000

            上面的if((purview & k1) >0)的结果就是 00001100&00000010 =00000000 也就是(0>0)=false

           同样if((purview & k2) >0)的结果就是 00001100&00000100 =00000100=4=k2 也就是 (4>0)=true

 

这样我们就理解组合权限串和判断权限的原理了,说白了就是对2N次方数的按位与和按位或。

 

分享到:
评论

相关推荐

    第5讲 数据类型 - 位串.zip

    3. **位运算**:包括按位与(AND)、按位或(OR)、按位异或(XOR)、按位非(NOT)以及左移()和右移(&gt;&gt;)操作。 4. **长度和填充**:获取位串的长度,以及在位串的末尾添加0或1以达到特定长度。 5. **转换**:将...

    JS通过位运算实现权限加解密

    2. **或运算符("|"]**:两个数进行逐位或运算,只要对应的二进制位中有1,结果位就为1,否则为0。例如,10与7进行或运算得到15(二进制1111)。 3. **异或运算符("^")**:两个数进行逐位异或运算,相同位为0,...

    PB中权限管理的解决方案

    一种更好的方法是,将一个子系统中所有需要进行权限控制的项组合成一个二进制串,每四个二进制数转化成一个字符(可以是"0","1","2"...."a","b","c","d","e","f"),再保存在表中。这样我们可以算一下,如果一个子...

    PB中多用户权限控制实施

    - **二进制编码原理**:每个菜单项或其他控件的权限状态可以用一位二进制数(0或1)表示,其中0表示无权限,1表示有权限。 - **编码转换**:为了便于存储和处理,可以将多个二进制位组合成一个字符。例如,每四个二...

    Linux和Unix Shell权限管理

    1. **权限类型**:Linux和Unix采用一个九位的权限字符串表示文件或目录的权限。这分为读(r)、写(w)和执行(x)三种类型。对于文件,执行权限通常适用于可执行文件;对于目录,执行权限允许用户导航进入该目录。 ...

    asp小知识\权限算法

    - 当需要判断用户是否有某个特定权限时,可以将该权限的权重值与用户的总权限值进行按位与(`&`)运算。 - 如果结果不为零,则表示用户拥有该权限;反之则无此权限。 - 例如,假设某用户的权限值为7(即1+2+4),...

    易语言源码易语言动态自定义权限设置源码.rar

    易语言中的字符串和数组类型可以用来表示这些权限,通过组合不同的权限字符串,可以构建出复杂的权限模式。 2. **权限分配**:分配权限给用户或用户组是权限设置的重要环节。易语言提供了丰富的数据结构,如列表、...

    通过串口控制对方计算机关闭

    1. **设置串口**:在服务器端,需要配置串口参数,如波特率(常见的有9600、19200、57600等)、数据位(通常为8位)、停止位(通常为1位)和校验位(无校验、奇校验或偶校验)。这些参数需要与客户端一致,以确保...

    XP下串口的读写(VC)

    串口通信涉及到的主要参数包括波特率(例如9600、19200等)、数据位(5、6、7、8位)、停止位(1或2位)和校验位(无、奇、偶、标记、空间)。 二、VC与串口编程 在VC中,我们主要使用Windows API函数来处理串口...

    设置mysql用户权限

    其中,“privileges”可以是一个或多个权限的组合,用逗号分隔;“database_name”和“object_name”分别表示数据库名和对象名(可以是表名或其他数据库对象);“username”和“host”则分别表示用户名和允许连接的...

    asp权限控制,asp+access,含数据库文件

    6. **数据库权限控制**:在ASP+Access的组合中,除了在应用程序层面控制权限,还可以在数据库级别设置权限。Access数据库允许为用户或用户组设置读、写、修改和删除数据的权限,进一步加强了安全性。 7. **错误处理...

    数据库例子_权限管理

    - `number`:用2的幂次表示不同的权限,便于通过位运算进行权限组合。 - `remark`:备注字段,用于记录权限的详细说明,如"read"、"write"等。 2. **资源列表表(resource)** - `resource_id`:主键,资源的...

    基于MFC的串口COM扫描程序

    6. **错误处理**:在尝试打开端口时,可能会遇到权限问题或其他错误,因此需要适当的错误处理机制,例如捕获异常并显示错误消息。 7. **关闭串口**:在扫描完成后,确保所有的串口都被正确关闭,以释放资源。 这个...

    vb 转二进制串并运算判断第几位为0

    可以使用位AND运算来检查特定权限是否存在:`If (权限码 AND (1 )) = 0 Then`,这里的`(1 )`是左移运算,相当于将1移动n位,用于设置或检查特定位置的位。 幂运算在权限系统中也起着关键作用。在VB中,`^`符号用于...

    串口API函数大全

    - **dwDesiredAccess**:访问类型,可以是`GENERIC_READ`(读取)、`GENERIC_WRITE`(写入)或两者的组合。 - **dwShareMode**:对于串口来说,此参数必须为0。 - **lpSecurityAttributes**:安全属性结构指针,通常...

    组合框选择文件无文字

    6. **权限问题**:如果程序没有足够的权限访问或读取选定的文件,可能会导致组合框无法显示文件名。确保程序有适当的文件访问权限。 7. **控件限制**:某些情况下,如果组合框的大小不足以显示整个文件名,也可能看...

    使用Visual C++进行串口通信编程

    例如,要打开一个名为"COM1"的串口,你可以设置`lpFileName`参数为"COM1",`dwDesiredAccess`参数可以是`GENERIC_READ`、`GENERIC_WRITE`或者两者的组合,以确定你对串口的访问权限。`CreateFile`返回的句柄将在后续...

    APICloud教程-role roleMapping 权限说明

    - 如果需要实现类似“只有自己或者自己的上级领导可以修改”的场景,可以设置`owner`权限+`role`权限或者`user`限制的组合。 3. **角色权限(role)**: 需要根据角色名称来设置权限,而不是直接使用角色ID。 4. **...

    RGB24位转16位.zip

    用户可以输入或输入一串24位RGB值,例如"FF0000"代表纯红色,该工具会将其转换为16位等效值,如"f800",这在16位色彩模式下最接近原色。这个转换过程涉及到对每个颜色通道的位数进行裁剪和调整,以适应16位的限制。 ...

    EMCCX或AX忘记管理IP或密码串口更改方法PPT学习教案.pptx

    1. **物理访问**:如果设备有物理访问权限,可以直接连接到设备的控制台端口(Console Port),使用串行线和终端仿真器(如SecureCRT或Putty)建立连接,然后进入设备的命令行界面(CLI)进行配置。 2. **默认IP查找...

Global site tag (gtag.js) - Google Analytics