我想在gmp中初始化一个mpz_t
变量,其值非常大,如1024位大整数。我怎么能这样做?我是gmp的新手。任何帮助将不胜感激。
答案 0 :(得分:7)
使用mpz_import
。例如:
uint8_t input[128];
mpz_t z;
mpz_init(z);
// Convert the 1024-bit number 'input' into an mpz_t, with the most significant byte
// first and using native endianness within each byte.
mpz_import(z, sizeof(input), 1, sizeof(input[0]), 0, 0, input);
答案 1 :(得分:2)
要从C ++中的字符串初始化GMP整数,可以使用libgmp++
并直接使用构造函数:
#include <gmpxx.h>
const std::string my_number = "12345678901234567890";
mpz_class n(my_number); // done!
如果您仍需要原始mpz_t
类型,请说n.get_mpz_t()
。
在C中,你必须拼写出来:
#include <gmp.h>
const char * const my_number = "12345678901234567890";
int err;
mpz_t n;
mpz_init(n);
err = mpz_set_str(n, my_number); /* check that err == 0 ! */
/* ... */
mpz_clear(n);
有关初始化整数的更多方法,请参阅documentation。