在C中以整数形式存储非常大的数字

在C中以整数形式存储非常大的数字,c,numbers,integer,C,Numbers,Integer,我需要在C程序中将一个非常大的数字存储为整数,无符号长int仍然太小,我需要一个非常大的数据类型,它仍然可以使用模运算符(%)。有几个库可以做到这一点 如果您出于加密目的需要它(例如,您对模运算的需求暗示了RSA),OpenSSL BN非常适合我只想加入另一个库来解决这个问题,我刚刚完成: 它比前面提到的库更加轻量级。请确保它仍然能满足您的需求,因为它存在一些限制 例如,您可以执行如下的模运算: char i[20] = "5005"; kmbint_mod(i

我需要在C程序中将一个非常大的数字存储为整数,
无符号长int
仍然太小,我需要一个非常大的数据类型,它仍然可以使用模运算符(%)。

有几个库可以做到这一点


如果您出于加密目的需要它(例如,您对模运算的需求暗示了RSA),OpenSSL BN非常适合

我只想加入另一个库来解决这个问题,我刚刚完成:

它比前面提到的库更加轻量级。请确保它仍然能满足您的需求,因为它存在一些限制

例如,您可以执行如下的模运算:

char i[20] = "5005";
kmbint_mod(i, "10");
// i is now "5"

不签名的long-long怎么样?通常是64位。使用任意精度的整数库()有时可以避免模运算本身。如果您可以使用模运算完成所有运算,并且只取最终结果的模,那么可以删除模运算。编写您自己的“双精度长”支持。“我需要一个非常大的数据类型”是一个无限的目标。提供更多细节。这是一个挑战性的问题,不适用于密码学,而大数算术或加密例程是错误的方向。(我从问题文本中有所怀疑,但OP的历史记录显示了之前关于Project Euler的一个问题。)我希望这个问题设计在正常整数的范围内,前提是模的属性被智能地使用。是的,我想知道一个12的数字有多少个因子digits@DylanCleaver:如果您的C实现支持,请包括
并使用
uint64\t
。如果需要从输入中读取大量数字,您可能还需要
及其提供的格式说明符。