如何在mongo db上从gmlib存储mpz_t

How to store mpz_t from gmlib on a mongo db?

本文关键字:存储 mpz gmlib 上从 mongo db      更新时间:2023-10-16

我正在使用GMP库来管理C 代码中的大数字。我还使用MongoCXX客户端来连接并与MongoDB数据库进行查询。如何将MPZ_T编号存储在Mongo数据库中?甚至更好,我如何将mpz_t转换为mongodb中的numeberlong?

这取决于您打算做什么。MongoDB没有任意的精确编号类型,因此您本质上有两个选择:

如果数字类型适合 64位整数,则可以使用函数

unsigned long valint = mpz_get_ui(val);
// or
long valint = mpz_get_si(val);

将数字转换为64位整数并将其存储在NumberLong数据类型中。

否则,您始终可以将数字val转换为

的字符串
char *valstr = mpz_get_str(NULL, 10, val);

并将其作为文本存储在数据库中。这可能是最安全的解决方案,如果您只想 store 数字并且不需要在数据库级别进行处理