Как сохранить mpz_t из gmlib в базе данных mongo?

Я использую библиотеку GMP для управления большими числами в коде С++. Я также использую клиент mongocxx для подключения и выполнения запросов к базе данных mongodb. Как я могу сохранить номер mpz_t в базе данных монго? Или, что еще лучше, как я могу преобразовать mpz_t в NumeberLong в mongodb?


person Federico Caccia    schedule 03.07.2019    source источник


Ответы (1)


Это зависит от того, что вы планируете делать. 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);

и сохранить его как текст в базе данных. Это может быть самым безопасным решением, если вы хотите только сохранить номер и не должны обрабатывать его на уровне базы данных.

person Ctx    schedule 03.07.2019