如何将gmlib中的mpz_t存储在mongo数据库上?

时间:2019-07-03 14:14:57

标签: c++ c mongodb gmp bignum

我正在使用GMP库在c ++代码中管理大数。我还使用mongocxx客户端连接并查询mongodb数据库。如何在mongo数据库中存储mpz_t号?甚至更好,如何将mpz_t转换为mongodb中的NumeberLong?

1 个答案:

答案 0 :(得分:1)

这取决于您打算做什么。 MongoDB没有任意精度的数字类型,因此您实际上有两个选择:

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

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

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

否则,您始终可以使用{p>将数字val转换为字符串。

char *valstr = mpz_get_str(NULL, 10, val);

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