安全地处理 python 扩展中的大量数据

safely handle huge numbers in python extension

从 Python 3 开始,int 的大小没有上限。我想处理 150 位以上十进制数字的巨大整数。

这比 unsigned long long 保证的要大得多,所以我认为我不能依赖 PyLong_AsLongLong 并操纵它。

如何对传递给我的 C 扩展方法的如此大的整数执行数学运算?

只需将它们 处理为 Python 整数,使用 Python 算术运算,如 PyNumber_Add and PyNumber_Multiply。不要尝试转换为机器整数。

现在,如果您希望通过在 C 中执行此操作来获得任何速度优势,那是不可能的。如果您想优化大整数运算,请尝试更高效的 bignum 库,例如 gmpy2。确保你的算法也是高效的——无论使用哪种整数实现,你的代码审查问题中的 _reverseBits 都是非常低效的。