• 可用于权限计算的帮助类


    http://blog.csdn.net/fulinkster/article/details/6597938

     1 package com.fh.util;
     2 
     3 import java.math.BigInteger;
     4 
     5 /**
     6  * @author Administrator
     7  * 权限计算帮助类
     8  */
     9 public class RightsHelper {
    10     /**
    11      * 利用BigInteger对权限进行2的权的和计算
    12      * @param rights int型权限编码数组
    13      * @return 2的权的和
    14      */
    15     public static BigInteger sumRights(int[] rights){
    16         BigInteger num = new BigInteger("0");
    17         for(int i=0; i<rights.length; i++){
    18             num = num.setBit(rights[i]);
    19         }
    20         return num;
    21     }
    22     /**
    23      * 利用BigInteger对权限进行2的权的和计算
    24      * @param rights String型权限编码数组
    25      * @return 2的权的和
    26      */
    27     public static BigInteger sumRights(String[] rights){
    28         BigInteger num = new BigInteger("0");
    29         for(int i=0; i<rights.length; i++){
    30             num = num.setBit(Integer.parseInt(rights[i]));
    31         }
    32         return num;
    33     }
    34     
    35     /**
    36      * 测试是否具有指定编码的权限
    37      * @param sum
    38      * @param targetRights
    39      * @return
    40      */
    41     public static boolean testRights(BigInteger sum,int targetRights){
    42         return sum.testBit(targetRights);
    43     }
    44     
    45     /**
    46      * 测试是否具有指定编码的权限
    47      * @param sum
    48      * @param targetRights
    49      * @return
    50      */
    51     public static boolean testRights(String sum,int targetRights){
    52         if(Tools.isEmpty(sum))
    53             return false;
    54         return testRights(new BigInteger(sum),targetRights);
    55     }
    56     
    57     /**
    58      * 测试是否具有指定编码的权限
    59      * @param sum
    60      * @param targetRights
    61      * @return
    62      */
    63     public static boolean testRights(String sum,String targetRights){
    64         if(Tools.isEmpty(sum))
    65             return false;
    66         return testRights(new BigInteger(sum),targetRights);
    67     }
    68     
    69     /**
    70      * 测试是否具有指定编码的权限
    71      * @param sum
    72      * @param targetRights
    73      * @return
    74      */
    75     public static boolean testRights(BigInteger sum,String targetRights){
    76         return testRights(sum,Integer.parseInt(targetRights));
    77     }
    78 }

    sumRights方法调用了BigInteger的setBit方法,实际上就是进行2的权的和运算。

    比如:RightsHelper.sumRights(new int[]{1,2,3,4});实际上就是:1^2+2^2+3^2+4^2

  • 相关阅读:
    浅谈缓存管理
    [Architecture Pattern] Database Migration (上)
    knockout.js的学习笔记4
    cenOS5.5安装oracle10g(傻瓜篇)
    SportsStore:管理 — 精通ASP.NET MVC 3
    ASP.NET MVC下的异步Action的定义和执行原理
    基于EF 4.3.1 Code First的领域驱动设计实践案例
    asp.net缓存
    《Pro ASP.NET MVC 3 Framework》部署
    Asp.Net MVC 3.0【Hello World!】
  • 原文地址:https://www.cnblogs.com/a757956132/p/5467823.html
Copyright © 2020-2023  润新知