我正在用C++实现BigInt的实现,并且很难弄清楚如何创建从(到)字符串的转换器(C字符串现在就足够了)。
我将数字实现为无符号int数组(因此,基本上将位块彼此相邻放置)。我只是不知道如何将字符串转换为此表示形式。
例如,如果usigned int为32b,而我得到的字符串为“4294967296”或“5000000000”,或者基本上大于32b int可以容纳的值,我如何将其正确转换为合适的二进制表示形式?
我知道我缺少明显的东西,而我只是要求向正确的方向发展。感谢您的帮助,也很抱歉提出这样一个愚蠢的问题!
最佳答案
一种方法(不一定是最有效的方法)是实现通常的算术运算符,然后执行以下操作:
// (pseudo-code)
// String to BigInt
String s = ...;
BigInt x = 0;
while (!s.empty())
{
x *= 10;
x += s[0] - '0';
s.pop_front();
}
Output(x);
// (pseudo-code)
// BigInt to String
BigInt x = ...;
String s;
while (x > 0)
{
s += '0' + x % 10;
x /= 10;
}
Reverse(s);
Output(s);
如果您想做一些比您更棘手的事情,可以尝试以下方法:
关于c++ - BigInt实现-将字符串转换为以unsigned int存储的二进制表示形式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9833112/