在C中存储和使用大数字

我需要帮助非常大的数字。 根据Windows calc,指数

174^55 = 1.6990597648061509725749329578093e+123 

我将如何使用C(c99标准)存储这个?

 int main(){ long long int x = 174^55; //result is 153 printf("%lld\n", x); } 

C中的正常types通常只能存储64位数据,所以你必须将大数字存储在一个数组中,并且自己编写math运算。 但是你不应该在这里重新发明轮子 – 你可以尝试GNU多精度算术库来达到这个目的。

正如注释已经指出的, ^操作是二进制XOR。 为了求幂,你将不得不使用像pow这样的math函数。

如果近似值正确,则可以使用浮点数( floatdouble float )。 正如评论者所说,你需要pow ,而不是^

但是,对于密码学来说,近似不起作用。 您需要支持非常大整数的算术。 GMP提供了通用的多精度算术支持。 许多encryption软件包在其代码中也会有这样的algorithm,可以通过第三方库或内置; PuTTY有一个用于大整数的bignum库,而OpenSSL可能有类似的东西。

基本的C数据types是不够的。

你可以将它存储在一个整数数组中。 64位整数只是2个32位整数。 一个1024位的整数也可以被看作32个32位整数。