我有一个整数数组。我使用for循环读取每个值。现在我想附加每个值的二进制值并获得附加二进制文件的小数。
例如
阵列=> 01 05
二进制=> 00000001 00000101
附加二进制=> 0000000100000101,给出小数点261。
我该怎么做?
请帮忙。
答案 0 :(得分:2)
由于这不是家庭作业,因此无需执行“转换为二进制”的低效中间步骤(计算机中的整数已经以二进制格式存储!)
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
long
而不是int
,否则你可能会溢出。
顺便问一下,你的for循环如何得到这些值?如果它正在读取单个字节并将它们转换为整数,那么一次性读取整个短路或整数可能更有意义,但要注意字节顺序。
答案 1 :(得分:1)
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。希望有所帮助:)