จะเก็บ mpz_t จาก gmlib บน mongo db ได้อย่างไร

ฉันใช้ไลบรารี GMP เพื่อจัดการตัวเลขจำนวนมากในโค้ด c++ ฉันยังใช้ไคลเอนต์ mongocxx เพื่อเชื่อมต่อและทำการสืบค้นไปยังฐานข้อมูล mongodb ฉันจะจัดเก็บหมายเลข mpz_t ในฐานข้อมูล mongo ได้อย่างไร หรือดีกว่านั้น ฉันจะแปลง 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