Во-первых, я делаю это для себя, поэтому, пожалуйста, не предлагайте "использовать GMP / xint / bignum" (если это вообще применимо).
Я ищу способ конвертировать большиецелые числа (скажем, БОЛЕЕ 9000 цифр) в массиве int32 с 2 32 представлениями.Числа начинаются как строки 10-й строки.
Например, если бы я хотел преобразовать string a = "4294967300"
(в базе 10), которая составляет чуть более INT_MAX
, в новую базу 2 32 массив, это будет int32_t b[] = {1,5}
.Если int32_t b[] = {3,2485738}
, базовое число 10 будет 3 * 2^32 + 2485738
.Очевидно, что числа, с которыми я буду работать, находятся за пределами диапазона даже int64, поэтому я не могу точно превратить строку в целое число и изменить мой путь к успеху.
У меня есть функция, которая выполняет вычитание в базе10. Прямо сейчас я думаю, что просто сделаю subtraction(char* number, "2^32")
и посчитаю, сколько раз я получу отрицательное число, но это может занять много времени для больших чисел.
Может кто-нибудь предложитьдругой метод конвертации?Спасибо.
РЕДАКТИРОВАТЬ
Извините, если вы не видите тег, я работаю в C ++