Mpz_t转换为数字数组

mpz_t to digit array c++

本文关键字:数字 数组 转换 Mpz      更新时间:2023-10-16

我需要将mpz_t转换为包含数字的int数组。例如

mpz_t t1; mpz_set_si(t1,12345); int digits[];
mpz_t2digits(t1,digits); //That function I need
//digits should now be {1,2,3,4,5}
我知道有一个函数叫做
mpz_export (void *rop, size_t *countp, int order, size_t size, int endian, size_t nails, const mpz_t op)

但是不合适

分两步。首先将数字转换为字符数组,其中每个字符表示一个数字。使用mpz_get_str (char *str, int base, const mpz_t op)。然后将该数组中的每个字符(数字)转换为整数。一种方法是从每个字符中减去48('0'的ASCII码),如果你不介意的话。

顺便说一下,mpz_set_si适用于有符号整数。你将如何在你得到的digits[]中表示负数?也许mpz_set_ui(对于unsigned int)可能更合适。