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