追加从数组中读取的整数的二进制值

时间:2011-04-13 04:39:02

标签: java arrays binary byte base


我有一个整数数组。我使用for循环读取每个值。现在我想附加每个值的二进制值并获得附加二进制文件的小数。

例如

阵列=> 01 05
二进制=> 00000001 00000101
附加二进制=> 0000000100000101,给出小数点261。

我该怎么做?

请帮忙。

2 个答案:

答案 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。希望有所帮助:)