J'écris un programme avec GNU Bignum et ce que je veux faire est simplement de lire un fichier binaire, et d'utiliser les données brutes comme un entier Bignum, mais chaque fois que je lis ce fichier même s'il fait environ 2MB de long et essaie d'imprimer le nombre qu'il me donne un très petit nombre comme 67 ou 300, je l'ai essayé avec des fichiers différents et tout se comporte de la même manière. le code source ci-dessous pourrait vous donner une idée de ce dont je parle.Comment convertir des données brutes en entiers en utilisant C et 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;
}
Qu'est-ce qui pourrait ne pas fonctionner ici?
Merci beaucoup, ça marche maintenant, je me sens vraiment mal d'être négligent. – Marauder