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))
    
  • 相关阅读:
    ansible register 之用法
    vim 多行注释和取消注释
    开启 ssh 的 root 登录
    HAproxy 添加多个配置文件
    1002. A+B for Polynomials (25)
    Java中浮点数能连续精确表示整数的范围
    1001. A+B Format (20)
    1003. 我要通过!(20)
    1009. 说反话 (20)
    1006. 换个格式输出整数 (15)
  • 原文地址:https://www.cnblogs.com/JohannaFeng/p/15122794.html
Copyright © 2011-2022 走看看