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



这是我的自动取款机:

我试图将列表中的整数转换为 int 数组。 问题是输出错误。 逻辑是:数组中的最后一个索引 ->如果 0 中断其他 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,因为它们的值彼此成反比。

最新更新