如何用字符串中的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);
有关初始化整数的更多方法,请参阅文档 。