Import GMP进出口
我在导入/导出方面有问题。 我尝试转换一个负整数和正整数,但当我处理负数时 我把牌子弄丢了。 有关于它的例子吗 出口:Import GMP进出口,import,export,biginteger,gmp,sign,Import,Export,Biginteger,Gmp,Sign,我在导入/导出方面有问题。 我尝试转换一个负整数和正整数,但当我处理负数时 我把牌子弄丢了。 有关于它的例子吗 出口: int mydim = (mpz_sizeinbase(c, 2) +7)/ 8; myb = ( char*) malloc(sizeof(char) * mydim); count = (size_t*) malloc(sizeof(size_t));
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];
}
}
intmydim=(mpz_sizeinbase(c,2)+7)/8;
myb=(char*)malloc(sizeof(char)*mydim);
count=(size_t*)malloc(sizeof(size_t));
如果(mpz_sgn(c)>=0){
mpz_导出((void*)myb,count,1,sizeof(char),1,0,c);
}
否则{
mpz_-add_-ui(c,c,1);
mpz_导出((void*)myb,count,1,sizeof(char),1,0,c);
对于(int i=0;i
忽略op的符号,只使用绝对值
报告说:
忽略op的符号,只使用绝对值
如何声明myb
?如果它是char*
,请检查char
在您的平台上是有符号的还是无符号的。char是有符号的。如果我在应用程序中使用char,结果总是负数。如果我使用无符号char,结果总是正数myb
如何声明?如果它是char*
,请检查查看char
在您的平台上是有符号的还是无符号的。char是有符号的。如果我在应用程序中使用char,结果总是负数。如果我使用无符号char,结果总是正数
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);