Permissions 位掩码权限-扩展/撤消权限

Permissions 位掩码权限-扩展/撤消权限,permissions,bit-manipulation,bitmask,bit-masks,Permissions,Bit Manipulation,Bitmask,Bit Masks,我有位掩码权限+角色集: { EDIT: '1', DELETE: '2', ADD: '4', VIEW: '8', } 我正在寻找一种最简单的方法,通过按位操作扩展和撤销用户权限 例如,用户已将7设置为权限,允许他编辑,删除和添加 我想添加视图和添加或12 用12扩展7成为15的最简单公式是什么,反之亦然 如何撤销用户现有权限12(VIEW,ADD)以撤销(DELETE,ADD)-6,使其等于8?好的,我想扩展一下,您可以使用按位或(|)类似的操作符 //

我有位掩码权限+角色集:

{
    EDIT: '1',
    DELETE: '2',
    ADD: '4',
    VIEW: '8',

}
我正在寻找一种最简单的方法,通过按位操作扩展撤销用户权限

例如,用户已将7设置为权限,允许他
编辑
删除
添加

我想添加
视图
添加
12

12扩展7成为15的最简单公式是什么,反之亦然


如何撤销用户现有权限12
VIEW
ADD
)以撤销(
DELETE
ADD
)-6,使其等于8

好的,我想扩展一下,您可以使用
按位或(|)类似的操作符

// Extend Permissions
var userPermissions = 7;
var addPermissions  = 12;
var newPermissions  = userPermissions | addPermissions // 7 | 12 = 15
要撤销,您可以使用
按位and(&)
并从用户权限中减去它,如:

// Revoke Permissions
var userPermissions    = 12;
var revokePermissions  = 6;
var newPermissions     = userPermissions - (userPermissions & revokePermissions) // 12 - (12 & 6) = 8

扩展:7位或12=15;撤销:12位和非位(6)=9