我的
import/export
GMP 功能有问题。
我尝试转换负数和正大整数,但是当我使用负数时,我会丢失符号。
有相关例子吗?
出口:
int mydim = (mpz_sizeinbase(c, 2) +7)/ 8;
myb = (char*) malloc(sizeof(char) * mydim);
count = (size_t*) malloc(sizeof(size_t));
if (mpz_sgn(c)>=0) {
mpz_export((void *) myb, count, 1, sizeof(char), 1, 0, c);
} else {
mpz_add_ui(c,c,1);
mpz_export((void*)myb, count, 1, sizeof(char), 1, 0, c);
for (int i =0;i<=mydim;i++) { //This could be done more effectively
myb[i]=~myb[i];
}
}
进口:
mpz_import(s, *count, 1, sizeof(myb[0]), 1, 0, myb);
int sign = myb[0] < 0?-1:1;
if (sign == -1)
mpz_neg(s,s);