zoukankan      html  css  js  c++  java
  • Bit mask 在C#中的应用,有示例代码。

    Bit mask来标识权限功能是非常简单和有用。

    比如我们有听, 说, 读 ,书,写个权限,其中

    听=0x0001

    说=0x0010
    读=0x0100

    写=0x1000

    1. 某人拥有听说权限, 那么他的仅限值应该是

    0x0001 | 0x0010 = 0x0011.

    2 判断0x0011是否有听权限

     0x0011 & 0x0001 = 0x0001 因此有权限。

    3. 判断0x0011是否有写权限

     0x0011 & 0x1000 = 0x0000 因此无权限。

    为此我特意封装了一个类来处理, 权限用枚举来列举。

    下面是示例代码:

        class Program
        {
            static void Main(string[] args)
            {

                权限帮助类 rmm = new 权限帮助类();
                rmm.Append(权限列表.听);
                rmm.Append(权限列表.说);
                Console.WriteLine(rmm.HasRight(权限列表.听));
                Console.WriteLine(rmm.HasRight(权限列表.写));
                Console.Read();
            }
        }
        public enum 权限列表
        {
            听 = 1,
            说,
            读,
            写,
        }

        public class 权限帮助类
        {
            public long Value = 0;
            public 权限帮助类()
            {
            }
            public 权限帮助类(long value)
            {
                Value = value;
            }
            public void Append(权限列表 rm)
            {
                if (!HasRight(rm))
                {
                    Value += GetRightValue(rm);
                }
            }
         public void Remove(权限列表 rm)
            {
                if (HasRight(rm))
                {
                    long cur = GetRightValue(rm);
                    Value = Value ^ cur;
                }
            }

            long GetRightValue(权限列表 rm)
            {
                int ert = 1;
                long abd = ert << ((int)rm - 1);
                return abd;
            }
            public bool HasRight(权限列表 rm)
            {
                long cur = GetRightValue(rm);
                return (Value & cur) == cur;
            }
        }

     如果您有更好的意见,建议,欢迎一起讨论。

     
     
  • 相关阅读:
    DIV+CSS规范命名大全集合
    display:none与visibility:hidden的区别
    为什么无法发起qq临时会话,必须添加好友?如何设置才能临时会话?
    gif动态图片去白边,杂边
    【原创】[PS技巧]如何制作翘角纸条的阴影效果
    ......那么Win8.1怎么去掉文件夹?
    Win8增加了快速启动功能......
    不间断图片滚动JS
    FlatList
    react native 布局
  • 原文地址:https://www.cnblogs.com/sgciviolence/p/2393427.html
Copyright © 2011-2022 走看看