菜单

JS通过位运算完成权力加解密

2019年5月24日 - 金沙前端

首先介绍一下js中的位运算:

  1. “&” :与运算,转化为2进制数,假使一样位数都为一则得结果为一,不然为0;

  2. “|”
    :或运算,转化为二进制数,假诺同样位数只要有三个为一则得结果为壹,不然为0;

  3. “^” :异或运算,转化为二进制数,若是1致位数不相同则得结果为一,不然为0;

4.”<<”
异位运算符,一<<一,表示将一左移壹位,也正是0十,在二进制中代表二;

顺手说一下,10进制数字互相转化。

10进制转为别的进制:

var num = 123;
console.log(num.toString(2))
console.log(num.toString(8))//参数传想要转化的位数

其余进制转化为拾进制:

var num = 110;
console.log(parseInt(num,2))//二进制转化为十进制

万一大家后天有5项权力,在二进制中用1意味着全部权力,0代表不具备。所以11111如此表示全数具备的5项权力,那么我们怎么知道用户是或不是有某一项具体权限呢。

比方,我们未来想检查实验用户是不是有第3项权力,大家率先用过异位 1 <<
0,向左移0位,依然一,然后① & (Math.pow(二,伍) -壹),

譬喻再次来到0,表明个位对不上,也正是说我们近期未有权力,如若回到1,表达我们富有第一项权力,同理,要是供给核算第几个人权限,只须求异位二就好了。

if((1 << 0) & (Math.pow(2,5) - 1) !== 0){
  //拥有第一项权限权限
}
if((1 << 1) & (Math.pow(2,5) - 1) !== 0){
  //拥有第一项权限权限
}

总结

以上所述是笔者给大家介绍的JS通过位运算落成权力加解密,希望对大家有着援救,假设大家有其余疑问请给自身留言,作者会及时过来我们的。在此也特别感激大家对台本之家网站的支持!

您大概感兴趣的稿子:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图