Использование BigInteger.toByteArray () и BigInteger (байт []) .
Согласно Javadoc, последний ...
Переводит байтовый массив, содержащий двоичное представление BigInteger с двумя дополнениями, в BigInteger.Предполагается, что входной массив находится в порядке байтов с прямым порядком байтов: самый старший байт находится в нулевом элементе.
Если ваше побайтное представление отличается, вам может потребоваться применить некоторые дополнительные преобразования.
РЕДАКТИРОВАТЬ - если вам нужно сохранить ведущий (то есть не-значим) нули, выполните следующие действия:
При преобразовании из байтового массива в BigInteger также запишите размер байтового массива.Эта информация не закодирована в значении BigInteger.
Когда вы преобразуете из BigInteger в байтовый массив, знак расширяет байтовый массив до той же длины, что и исходный байтовый массив.
EDIT 2 - если вы хотите превратить байтовый массив в массив BigIntegers, содержащий не более N байтов в каждом, вам необходимо создать временный массивразмером N, неоднократно 1) заполняйте его байтами из массива входных байтов (с левым заполнением в конце) и 2) используйте его для создания значений BigInteger с помощью конструктора выше.Может быть, 20 строк кода?
Но я откровенно озадачен тем, что вы (очевидно) выберете значение для N
, основываясь на использовании памяти, а не на математическом алгоритме, который вы пытаетесь реализовать.