有一个功能可以将MPZ数字设置为zero-terminated string.
int mpz_set_str (mpz_t rop, const char *str, int base);
但是non-zero terminated string没有函数,我想这样做可以避免对字符串的分配和更改.
int mpz_set_strn (mpz_t rop, const char *str, size_t n, int base);
我在gmp-discuss上找到了类似的关于这个的讨论
在我的例子中,我想使用字符串的一部分.我曾try 模拟mpz_set_str函数在后台的作用,但似乎不起作用.
#include <gmp.h>
int main(){
const char * str_base16 = "354a546fde";
mpz_t bn;
mp_size_t xsize;
mpz_init(bn);
// setting bn with part of str_base16
mpz_realloc2(bn, 8*4);
xsize = mpn_set_str(bn->_mp_d, (unsigned char *)str_base16, 8, 16);
bn->_mp_size = xsize;
gmp_printf("%ZX\n", bn);
return 0;
}
输出:
337637766
个