这是我的自动取款机:
我试图将列表中的整数转换为 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 循环来获取数组index
和exponent
,因为它们的值彼此成反比。