我正在寻找一个大整数的库,但是有固定的宽度(128或256就足够了)。原因是我不想在堆上进行任何分配。 我试图自己制作它们但是实现乘法,除法和模数一种有效的方式似乎是一种非常痛苦的方法。
这已经存在吗?
由于
答案 0 :(得分:4)
查看GMP库:www.gmplib.org
从功能类别中引用:
低级正整数, 难以使用,开销很低 函数可以在mpn中找到 类别。没有内存管理 执行;呼叫者必须确保 足够的空间可用于 结果。 (...)
这似乎就是你所需要的。
答案 1 :(得分:3)
这至少看起来很有希望(谷歌上的int128 library
命中数字为8)。
http://www.mx-3.cz/tringi/www/langen.php?id=int128
“与其他大数字类不同,您可以像使用其他POD类型一样处理这些类型(例如使用fwrite / fread从文件中存储和加载)。这些内部表示是正确的128位小端整数。”
答案 2 :(得分:2)
如果你觉得GMP太复杂了,Dave Hanson在他的书C Interfaces and Implementations中有一些非常好的功能。有一个没有分配的低级接口(你可以控制所有东西),然后有两个更高级别的接口可以逐步管理堆上的更多分配。