zoukankan      html  css  js  c++  java
  • node的二进制权限比对设计

    简单的设计一个权限比对方式:

    1、假设有以下权限数字

    const a = 1
    const b = 2
    const c = 4
    const d = 8
    const e = 16
    

    转换成二进制为

    console.log('a:', parseInt(a).toString(2))
    console.log('b:', parseInt(b).toString(2))
    console.log('c:', parseInt(c).toString(2))
    console.log('d:', parseInt(d).toString(2))
    console.log('e:', parseInt(e).toString(2))
    ---
    输出:
    a: 1
    b: 10
    c: 100
    d: 1000
    e: 10000
    

    2、某人有管理权限b,c,d,e

    b+c+d+e=2+4+8+16=30
    

    检测权限位为:

    console.log('a:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(a).toString(2), 2)))
    console.log('b:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(b).toString(2), 2)))
    console.log('c:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(c).toString(2), 2)))
    console.log('d:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(d).toString(2), 2)))
    console.log('e:', !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(e).toString(2), 2)))
    ------
    输出:
    a: false // a权限为false
    b: true
    c: true
    d: true
    e: true
    

    重点:

    // 权限检测
    !!(parseInt(parseInt(30).toString(2), 2) & parseInt(parseInt(a).toString(2), 2))
    
  • 相关阅读:
    高中数学常见角的范围及其表示
    立体几何习题
    常见的建系类型汇总
    双曲线
    分式不等式习题
    廓清集合中的几个问题
    二次函数
    随机变量的期望和方差
    不等式选讲习题
    JS中every()和some()的用法
  • 原文地址:https://www.cnblogs.com/JohannaFeng/p/15122794.html
Copyright © 2011-2022 走看看