我想将整数列表中的所有二进制文件转换为十进制整数

I want to transform all the binaries in a Integer List to an decimal int

这是我的 atm:

我试图将列表中的整数转换为 int 数组。 问题是输出错误。 逻辑是:数组中的最后一个索引 -> if 0 break else 2^索引。

import java.util.Arrays;
import java.util.List;

public class BinaryArrayToNumber {

public static int ConvertBinaryArrayToInt(List<Integer> binary) {

    int x = 0;

    int[] binaries = new int[binary.size()];

    binary.forEach(integer -> {
        Arrays.fill(binaries, integer);
    });

    for (int j = binaries.length - 1; j>=0; j--) {
        if (binaries[j] == 0) break;
        else {
            x = (int) (x + Math.pow(2, j));
        }
    }
    return x;
 }
}

好的,这是一些帮助。

首先从列表复制到数组,循环执行即可。

    int[] binaries = new int[binary.size()];
    // here is how you copy the list.

    for (int i = 0; i < binary.size(); i++) {
         binaries[i] = binary.get(i);
    }

当然你可以使用列表而不用转换成数组。

现在,将您的位列表转换为十进制值。你的想法是对的,但你需要考虑把东西放在哪里。

Array indices        0  1  2  3
And say the bits are 1, 1, 0, 1  with x = initialized to 0

使用 2 的幂,其中 ^ 表示求幂。

x = binary[0] * 2^3 + x  // now x = 8
x = binary[1] * 2^2 + x  // now x = 8 + 4 = 12
x = binary[2] * 2^1 + x  // now x = 12 + 0 = 12
x = binary[3] * 2^0 + x  // now x = 12 + 1 = 13.

现在您只需要使用 for 循环来获得数组 indexexponent,因为它们的值彼此相反。