如何在 Java 中将二进制字符串转换为 10 进制整数

2022-08-31 07:52:37

我有一个表示二进制数(不带前导零)的字符串数组,我想将其转换为相应的基数10。考虑:

binary 1011 becomes integer 11
binary 1001 becomes integer 9
binary   11 becomes integer 3   etc. 

最好的方法是什么?我一直在探索java.lang.number.*,但没有找到直接转换的方法。 生成一个等于字符串的整数...例如,1001 变成 1,001 而不是 9...并且似乎不包含输出基数的参数。 转换方向错误。我怀疑我需要进行多步转换,但似乎找不到方法或子类的正确组合。我也不确定前导零或缺乏零在多大程度上会成为一个问题。有人有什么好的方向可以指给我吗?Integer.parseInt(b)toBinaryString


答案 1

您需要指定基数。有一个重载允许你这样做。Integer#parseInt()

int foo = Integer.parseInt("1001", 2);

答案 2

这可能有效:

public int binaryToInteger(String binary) {
    char[] numbers = binary.toCharArray();
    int result = 0;
    for(int i=numbers.length - 1; i>=0; i--)
        if(numbers[i]=='1')
            result += Math.pow(2, (numbers.length-i - 1));
    return result;
}