Как сохранить mpz_t из gmlib на базе данных mongo? - PullRequest
2 голосов
/ 03 июля 2019

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

1 Ответ

1 голос
/ 03 июля 2019

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

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

...