добавить двоичные значения целых чисел, прочитанных из массива - PullRequest
0 голосов
/ 13 апреля 2011


У меня есть массив целых чисел. Я читаю каждое значение, используя цикл for.Теперь я хочу добавить двоичный файл каждого значения и получить десятичный знак добавленного двоичного файла.

например.

array => 01 05
binary => 00000001 00000101
двоичный => 0000000100000101, который дает десятичное число 261.

Как мне это сделать?

, пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 13 апреля 2011

Поскольку это не домашняя работа, нет необходимости выполнять неэффективный промежуточный шаг «преобразования в двоичный файл» (целые числа в компьютерах уже хранятся в двоичном формате!)

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, в противном случае вы можете получить переполнение.

Кстати, какваш цикл для получения значений?Если он читает отдельные байты и конвертирует их в целые числа, возможно, имеет смысл читать целые шорты или целые числа за один раз, хотя следите за порядком байтов.

1 голос
/ 13 апреля 2011
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. Надеюсь, что поможет:)

...