java BigInteger 對許可權進行2的權的和計算

FH-Admin發表於2021-09-29
package com.fh.util;

import java.math.BigInteger;

/**
 * 說明:許可權計算幫助類
 * 作者:FH Admin
 * 官網:fhadmin.cn
 */
public class RightsHelper {
    /**
     * 利用BigInteger對許可權進行2的權的和計算
     * @param rights int型許可權編碼陣列
     * @return 2的權的和
     */
    public static BigInteger sumRights(int[] rights){
        BigInteger num = new BigInteger("0");
        for(int i=0; i<rights.length; i++){
            num = num.setBit(rights[i]);
        }
        return num;
    }
    /**
     * 利用BigInteger對許可權進行2的權的和計算
     * @param rights String型許可權編碼陣列
     * @return 2的權的和
     */
    public static BigInteger sumRights(String[] rights){
        BigInteger num = new BigInteger("0");
        for(int i=0; i<rights.length; i++){
            num = num.setBit(Integer.parseInt(rights[i]));
        }
        return num;
    }

    /**
     * 測試是否具有指定編碼的許可權
     * @param sum
     * @param targetRights
     * @return
     */
    public static boolean testRights(BigInteger sum,int targetRights){
        return sum.testBit(targetRights);
    }

    /**
     * 測試是否具有指定編碼的許可權
     * @param sum
     * @param targetRights
     * @return
     */
    public static boolean testRights(String sum,int targetRights){
        if(Tools.isEmpty(sum))
            return false;
        return testRights(new BigInteger(sum),targetRights);
    }

    /**
     * 測試是否具有指定編碼的許可權
     * @param sum
     * @param targetRights
     * @return
     */
    public static boolean testRights(String sum,String targetRights){
        if(Tools.isEmpty(sum))
            return false;
        return testRights(new BigInteger(sum),targetRights);
    }

    /**
     * 測試是否具有指定編碼的許可權
     * @param sum
     * @param targetRights
     * @return
     */
    public static boolean testRights(BigInteger sum,String targetRights){
        return testRights(sum,Integer.parseInt(targetRights));
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章