Я использую библиотеку GMP для управления большими числами в коде С++. Я также использую клиент mongocxx для подключения и выполнения запросов к базе данных mongodb. Как я могу сохранить номер mpz_t в базе данных монго? Или, что еще лучше, как я могу преобразовать mpz_t в NumeberLong в mongodb?
Как сохранить mpz_t из gmlib в базе данных mongo?
Ответы (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