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;

}

}

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