2013-10-24 5 views
0

Я хочу сохранить очень большое число, например 111111111100000001010 в ArrayList в java. После сохранения я должен найти количество байтов, необходимых для его сохранения. Номер найден с использованием функции String Find_code(int input). Как я могу эффективно сохранить его в памяти? Например, 21 бит для 111111111100000001010.Как сохранить очень большой двоичный код в java

+3

Почему бы не использовать BigInteger? –

+0

Для примера выше размер будет 211 байт Мне нужно 21 бит – Sara

+0

Почему это было 211? Почему (и как) вам нужно хранить его в 'ArrayList'? – iamnotmaynard

ответ

3

Использовать BitSet.

Этот класс реализует вектор бит, который растет по мере необходимости. Каждый компонент битового набора имеет логическое значение. Отдельные индексированные биты могут быть проверены, установлены или удалены.

+0

Итак, для String val = "111111111100000001010"; BitSet is {1, 3, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20} – Sara

+0

Я должен прочитать, сколько байтов использует – Sara

+0

Если по этому представлению вы имеете в виду битовые позиции которые установлены, то да. –

1

Если 111111111100000001010 является двоичным числом, то оно будет вписываться в целое число. Просто сохраните его в списке массивов целых чисел ArrayList<Integer>.

+0

Нет, это показывает меня Исключение в потоке «main» java.lang.NumberFormatException: для строки ввода: «111111111100000001010» – Sara

+0

@sweet: Вы действительно использовали 'Integer.parseInt (..., 2)'? – Holger

+0

Да, это работает, но Integer занимает больше памяти. – Sara

Смежные вопросы