我有一个整数数组。我使用 for 循环读取每个值。现在我想附加每个值的二进制并获得附加二进制的十进制。
例如。
数组=> 01 05
二进制=> 00000001 00000101
附加二进制=> 0000000100000101 给出十进制 261。
我该怎么做呢?
请帮忙。
由于这不是家庭作业,因此无需执行“转换为二进制”的低效中间步骤(计算机中的整数已经以二进制格式存储!)
public class Testy {
public static void main(String[] args) {
int[] arr = new int[] { 1, 5 };
int sum = 0;
for (int i = 0; i < arr.length; i++) {
int val = arr[i];
sum = (sum << 8) + val;
}
System.out.println("final: " + sum);
}
}
如果要包含超过 3 个整数,则应使用sum
along
而不是 a int
,否则可能会溢出。
顺便说一句,您的 for 循环如何获取值?如果它正在读取单个字节并将它们转换为整数,那么一次读取整个短裤或整数可能更有意义,但要注意字节顺序。
public class Testy {
public static void main(String[] args) {
int[] arr = new int[] { 1, 5 };
StringWriter sw = new StringWriter();
for (int i = 0; i < arr.length; i++) {
int val = arr[i];
String s = String.format("%08s", Integer.toBinaryString(val));
sw.append(s);
}
System.out.println("final: " + Integer.parseInt(sw.toString(), 2));
}
}
结果:261。希望有帮助:)