首先,我是为自己做的,所以请不要建议“使用 GMP / xint / bignum”(如果它甚至适用的话)。
我正在寻找一种将大整数(例如,超过 9000 位)转换为 2 32 个表示形式的 int32 数组的方法。这些数字将以 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++