有没有办法在C中将mpz_t变量转换为unsigned long long?反过来说,从ull到mpz_t怎么样?gmp库不支持这个,因为ull是C99的一部分.我发现了这个,但它是用c ++编写的,我不知道如何用c ++编写代码.提前感谢.
以下是一些在unsigned long long和之间进行翻译的功能mpz_t.请注意,mpz2ull如果数字太大而无法放入,则会粉碎您的堆栈unsigned long long:
unsigned long long mpz2ull(mpz_t z)
{
unsigned long long result = 0;
mpz_export(&result, 0, -1, sizeof result, 0, 0, z);
return result;
}
void ull2mpz(mpz_t z, unsigned long long ull)
{
mpz_import(z, 1, -1, sizeof ull, 0, 0, &ull);
}
Run Code Online (Sandbox Code Playgroud)