我有一個先前由其他人建立的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