我想将整数列表中的所有二进制文件转换为十进制整数
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 循环来获得数组 index
和 exponent
,因为它们的值彼此相反。
这是我的 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 循环来获得数组 index
和 exponent
,因为它们的值彼此相反。