我正在尝试对任意大整数实现 Solovoy-Strassen 素性测试。我还将编写一个 bignum (不能使用第三方实现,因为这是一个学术项目)。我决定使用以下 bignum 结构:
struct {
uint64_t *tab;
int size; // number of limbs
int sign;
}
我将使用 base-32 作为我的数字(因此 uint64_t,对于部分产品,至少我假设它们将是部分产品)。该决定基于 previous question asked.
我处于停滞状态。我无法想象如何将一个表示为任意大小的小数的字符串并将其转换为上面的 bignum 结构。
有人可以启发我吗?即使是一个较小的示例也很好,例如将任意字符串转换为八进制数字,并将其存储在 uint16_t 数组中。
谢谢。
最佳答案
您需要进行算术运算,调用您的例程。例如,如果字符串是“2013”(表示十进制的 2013),则执行: a=0; a=10*a+2; a=10*a+0; a=10*a+1; a=10*a+3
。
关于将任意大小的字符串转换为任意精度的整数(bigint),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2709616/