以前に他の誰かによって構築された ACL システムがあり、そこでビットマスキングがどのように機能するかを理解しようとしています。私はこの4つの定数を定義しています:
const NONE = 0;
const READ = 1;
const WRITE = 2;
const UPDATE = 4;
const DELETE = 8;
次に、DB で、1、2、5、9、15 のような権限を持つユーザーが表示されます。このツールを使用してそれらを変換しようとしたところ、次の結果になりました。
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
最後の 2 つのビットは であるため、これらのユーザーにはアクセス許可があると1
想定しています(上記の表を参照)。そうですか?そうでない場合、10進数からビットマスクに変換する正しい方法は何ですか?3
UPDATE|DELETE