比如传11会返回 1 2 8 + 11
public static String binaryString(String nums) {
try {
Integer num = Integer.valueOf(nums);
int bit = 1;
List<Integer> ret = new ArrayList<>();
while (bit <= num) {
if ((bit & num) > 0) {
ret.add(bit);
}
bit <<= 1;
}
if (num != ret.get(ret.size() - 1)){
ret.add(ret.size(),num);
}
return ret.toString().replaceAll("\\[|\\]", "");
} catch (Exception e){
System.err.println("数字解析异常");
return nums;
}
}