我有一个先前由其他人建立的ACL系统,我想了解位掩码如何在那里工作。我已经这4个常数来定义:如何将十进制转换为位掩码?
const NONE = 0;
const READ = 1;
const WRITE = 2;
const UPDATE = 4;
const DELETE = 8;
在DB我看到用户与像1的权限,2,5,9
然后,15我曾尝试使用this tool转化它们,我结束了这样的结果:
0 // NONE
1 // READ
2 // WRITE
3 // UPDATE|DELETE
4 // UPDATE
5 // WRITE|DELETE
6 // WRITE|UPDATE
7 // WRITE|UPDATE|DELETE
8 // DELETE
9 // READ|DELETE
10 // READ|UPDATE
11 // READ|UPDATE|DELETE
12 // READ|WRITE
13 // READ|WRITE|DELETE
14 // READ|WRITE|UPDATE
15 // READ|WRITE|DELETE|UPDATE
如何,我认为这项工作如下:
Decimal Hexadecimal
3 00000011
因为最后两个位1
我假设有这些用户将拥有UPDATE|DELETE
权限(请参阅上表)。是对的吗?如果不是什么是从十进制转换为位掩码的正确方法?
这只是基础数学。例如。你得到的最低位以模2为单位,并用/ 2移位一位,所以你可以看到2个常量的权重是通过重复设置的,直到你达到0为止。 – maraca
@maraca我不确定是否跟着你,例子将有助于 – ReynierPM