Преобразование строк произвольного размера в целые числа произвольной точности (bigints) - PullRequest
2 голосов
/ 25 апреля 2010

Я пытаюсь реализовать критерий примитивности Солового-Штрассена для произвольных больших целых чисел. Я также буду писать bignum (не могу использовать стороннюю реализацию, так как это академический проект). Я выбрал следующую структуру для Bignum:

struct {
  uint64_t *tab;
  int size; // number of limbs
  int sign;
}

Я буду использовать base-32 для своих цифр (следовательно, uint64_t, для частичных продуктов, по крайней мере, я предполагаю, что они будут частичными продуктами). Это решение было основано на предыдущем заданном вопросе.

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

Может ли кто-нибудь, пожалуйста, просветить меня. Было бы неплохо использовать еще меньший пример, например преобразование произвольной строки в восьмеричные цифры, которые будут храниться в массиве uint16_t.

Спасибо.

1 Ответ

3 голосов
/ 25 апреля 2010

Вы должны сделать арифметику, вызывая ваши процедуры. Например, если строка «2013» (представляет 2013 в десятичном виде), выполните: a=0; a=10*a+2; a=10*a+0; a=10*a+1; a=10*a+3.

...