如何用字符串中的1024位数字初始化gmp中的mpz_t?

我想在gmp中初始化一个mpz_t变量,其值非常大,如1024位大整数。 我怎么能这样做? 我是gmp的新手。 任何帮助,将不胜感激。

使用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); 

要从C ++中的字符串初始化GMP整数,可以使用libgmp++并直接使用构造函数:

 #include  const std::string my_number = "12345678901234567890"; mpz_class n(my_number); // done! 

如果你仍然需要原始的mpz_t类型,比如说n.get_mpz_t()

在C中,你必须拼写出来:

 #include  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); 

有关初始化整数的更多方法,请参阅文档 。