位運算--經過總值分解出子值(解析子值)

經過總值分解出子值

在作權限時管理時,會常常用到位運算。咱們怎麼經過一個杼總值分解出各個權限值呢?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;
}
相關文章
相關標籤/搜索