0
我正在用GNU Bignum编写一个程序,我想要做的只是读取一个二进制文件,并将原始数据用作Bignum整数,但每当我读取这个文件即使它大约2MB长,并尝试打印它给我一个非常小的数字,如67或300,我已经尝试过不同的文件,它的表现都一样。下面的源代码可能会让你知道我在说什么。如何使用C和GMP_Bignum将二进制原始数据转换为整数
#include <stdlib.h>
#include <stdio.h>
#include <gmp.h>
#include <string.h>
int main()
{
mpz_t data_in;
mpz_t data_out;
FILE *in_file;
FILE * out_file;
unsigned long file_length;
void* data;
//initialize data
mpz_init(data_in);
mpz_init(data_out);
in_file = fopen("main.c","rb");
out_file = fopen("out.txt","wb");
//get file length.
fseek(in_file,0,SEEK_END);
file_length = ftell(in_file);
fseek(in_file,0,SEEK_SET);
//allocate memory.
data = malloc(file_length);
//read file into memory.
fread(data,file_length,1,in_file);
//check to see if the first byte is zero
/*if(data[1]== 0)
{
printf(" first byte zero\n");
}
else
{
printf("first byte OK\nFile length %lu\n Data read %d\n",file_length,strlen(data));
}
*/
//import data as integer.
mpz_import(data_in,1,file_length,sizeof(data[0]),0,0,data);
//output number in the screen
gmp_printf(" Data is %Zd\n",data_in);
mpz_out_str(NULL,10,data_in);
fclose(in_file);
fclose(out_file);
return 0;
}
这里有什么问题?
非常感谢,现在有效,我真的因为粗心大意而感到不适。 – Marauder 2011-05-01 15:52:11