Добавление массивов байтов неограниченного размера в Java

Есть ли простой способ добавления байтовых массивов?

Я имею в виду математическое сложение (без конкатенации):

00 00 FF    
00 00 FF
--------
00 01 FE

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


person Jolinar    schedule 16.09.2015    source источник
comment
Покажи нам свою попытку   -  person Luigi Cortese    schedule 16.09.2015
comment
Вы пробовали BigInteger?   -  person nneonneo    schedule 16.09.2015
comment
возможный дубликат Как добавить два числа любой длины в Java?   -  person dimo414    schedule 16.09.2015
comment
Вы знаете, как долго работает сложение, вы научились этому в начальной школе. Это другая база, и есть забавная вещь, когда вам нужно пронести дальше конца массива, но вы можете это сделать, я уверен.   -  person harold    schedule 16.09.2015


Ответы (1)


Вы можете использовать BigInteger который не имеет теоретических ограничений по размеру. На практике, очевидно, если количество байтов слишком велико, чтобы поместиться в памяти, вам нужно использовать другой подход.

public void test() {
    BigInteger a = new BigInteger(new byte[]{(byte) 0x00, (byte) 0x00, (byte) 0xff});
    BigInteger b = new BigInteger(new byte[]{(byte) 0x00, (byte) 0x00, (byte) 0xff});

    System.out.println(a.toString(16) + "+" + b.toString(16) + "=" + a.add(b).toString(16));
}

печатает ff+ff=1fe.

person OldCurmudgeon    schedule 16.09.2015