为一个模糊的标题道歉。
传递有限数量的属性(例如读取、写入、执行……)的最佳方式是什么?我想我可以像这些权限一样做到这一点 - 计算分配给属性的一些数字的总和 - 1,2,4,8,16 ......这是最好的方法吗?我应该使用什么算法来获得总和- 例如,如果我有 17 - 我怎么能计算出这是 16 和 1?
谢谢。
您可以使用按位运算符。这样您就可以比较整数的实际位,这是它的工作原理:
Bit Pattern
8 4 2 1
1 0 0 0 = 8
0 1 1 1 = 7
0 1 1 0 = 6
0 1 0 1 = 5
0 1 0 0 = 4
0 0 1 1 = 3
0 0 1 0 = 2
0 0 0 1 = 1
0 0 0 0 = 0
所以,
6 & 4 = 4
均值向我显示 6 和 4 中都存在的位。比较 '0 1 1 0' 和 '0 1 0 0',您会看到第二位 '4' 是两者中唯一填充的位,所以返回 4 .
或者
7 & 3 = 3
均值向我显示 7 和 3 中都存在的位。比较 '0 1 1 1' 和 '0 0 1 1',您会看到第三 (2) 和第四 (1) 位都填充了,所以返回 3 (2 + 1)。