mpz_t到数字数组c ++

时间:2015-09-26 19:31:41

标签: c++ gmp

我需要将mpz_t转换为包含数字的int数组。 e.g。

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)

但这不适合。

1 个答案:

答案 0 :(得分:1)

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

顺便说一下,mpz_set_si用于签名整数。您如何在结果digits[]中代表负数?也许mpz_set_ui(对于unsigned int)可能更合适。