如何在 C++ 中获取任意大的数字?
How to get arbitrarily large numbers in c++?
我需要一种方法来使用非常非常大的数据类型。虽然 int 通常是 4 个字节,但我需要 536、870、912 字节甚至更高的数据类型。我不能只使用数组,因为我需要能够将它们转换为字符串、加、减、乘、除等。
如何创建或使用如此大的数据类型?我需要 uint4294967296_t :P
请注意,我曾尝试将结构与位域一起使用,但它们不够大,我无法使用它在值之间进行转换。
使用 Bignumber 库,我更喜欢 TTMath,因为它简单。你可以在这里找到它 Link to tttmath。 TTTmath 允许对大数进行操作,但您可能需要制作自己的 toString 方法。
这是他们 Samples 页面中使用的 TTTmath 示例:
#include <ttmath/ttmath.h>
#include <iostream>
int main()
{
ttmath::UInt<2> a,b,c;
a = "1234";
b = 3456;
c = a*b;
std::cout << c << std::endl;
}
Listing nr 1
我需要一种方法来使用非常非常大的数据类型。虽然 int 通常是 4 个字节,但我需要 536、870、912 字节甚至更高的数据类型。我不能只使用数组,因为我需要能够将它们转换为字符串、加、减、乘、除等。
如何创建或使用如此大的数据类型?我需要 uint4294967296_t :P
请注意,我曾尝试将结构与位域一起使用,但它们不够大,我无法使用它在值之间进行转换。
使用 Bignumber 库,我更喜欢 TTMath,因为它简单。你可以在这里找到它 Link to tttmath。 TTTmath 允许对大数进行操作,但您可能需要制作自己的 toString 方法。
这是他们 Samples 页面中使用的 TTTmath 示例:
#include <ttmath/ttmath.h>
#include <iostream>
int main()
{
ttmath::UInt<2> a,b,c;
a = "1234";
b = 3456;
c = a*b;
std::cout << c << std::endl;
}
Listing nr 1