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;
        }
    }

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

 
 
原文地址:https://www.cnblogs.com/sgciviolence/p/2393427.html