我正在尝试为arbritrary大整数实现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数组中。感谢。
答案 0 :(得分:3)
你需要做算术,调用你的例程。例如,如果字符串是“2013”(以十进制表示2013),请执行:a=0; a=10*a+2; a=10*a+0; a=10*a+1; a=10*a+3
。