Bonjour,
La fonction suivante permet de récupérer des informations dans un fichier binaire, puis de les recopier dans un autre fichier, sous forme numérique.
Les données que je récupère sont des nombres entre 0 et 254.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 void F(){ FILE * pFile; long iteration,block; char memblock[70];int xin; std::ofstream outfile("New3.txt"); std::ifstream infile("C:\\Users\\Pierre\\Favorites\\Documents\\Downloads\\Compressed\\openbookultraGG20080915_1_of_1",ios::in|ios::binary|ios::ate); if(infile.is_open()){ int a;long o=0; while(o<210000){ infile.read (memblock, 69); if((memblock[10]==71)&&(memblock[11]==83)){ for(int r=0;r<69;r++){ a=memblock[r]; if(a<0){a=256+a;} outfile<<a<<'\t'; }outfile<<'\n'; } o=o+1;} } infile.close(); }
Je veux surtout améliorer cette partie là:
En effet, les données que je récupère sont des nombres entre 0 et 254. Or étant donné que c'est sous forme de "char" que je récupère les données, les nombres seront compris entre -128 et 128. Lorsque c'est négatif, il faut que j'ajoute ce nombre à 256. (pour retrouver qqch entre 0 et 254).
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(a<0){a=256+a;}
Existe t il un moyen bcp plus propre pour faire ça? Comme en définissant correctement les types des variables, j'ai essayé par exemple, unsigned int, signed int, short, unsigned char,... mais rien n'y fait
Partager