• 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))
    
  • 相关阅读:
    二分和三分
    windows对拍及其应用
    RMQ与st表
    图论最短路
    图论最小生成树
    贪心问题
    [转载]图论500题
    第二次重建博客。。
    二分和三分题
    树状数组
  • 原文地址:https://www.cnblogs.com/JohannaFeng/p/15122794.html
Copyright © 2020-2023  润新知