位运算--经过总值分解出子值(解析子值)

经过总值分解出子值

在作权限时管理时,会常常用到位运算。咱们怎么经过一个杼总值分解出各个权限值呢?java

思路以下:将10进制的数值转换为2进制字符串,循环字符串各位置的值,遇到值为『1』时,则将后面的位置补『0』同时将2进数值转为10进制数。app

public List<Integer> getChildNum(int totalVal) {
    int itemVal;
    String binaryValStr = Integer.toBinaryString(totalVal);
    List<Integer> list = new ArrayList<>();
    StringBuilder sbNum = new StringBuilder();
    for (int i = binaryValStr.length() - 1; i >= 0; --i) {
        if (binaryValStr.charAt(i) == '1') {
            itemVal = Integer.parseInt("1" + sbNum.toString(), 2);
            list.add(itemVal);
        }
        sbNum.append('0');
    }
    return list;
}
相关文章
相关标签/搜索