Gestion de fichiers binaires
Résolu
Firo-
Messages postés
2
Statut
Membre
-
Firo- Messages postés 2 Statut Membre -
Firo- Messages postés 2 Statut Membre -
Bonjour
Il me faut un programme en c++ pour traiter des données binaires.
J'ai un editor Hexadecimal et un fichier de données binaires codées en Little Endian, alors que l'editeur et d'autres programmes l'ouvrent en Big Endian
J'ai donc fait un tableau 1 dimension du fichier.
Il est facile de passer de l'un vers l'autre avec un programme c++, enfin j'y parviens, seulement quand je réécris le fichier bin converti, j'ai un caractère parasite qui apparait tous les 1000 bits, c'est a dire tous les 125 bytes dans l'hex editor.
A savoir (0d) (qui correspond en ASCII a ' je crois).
En tout cas tous les 1000 bits j'ai un 0d qui s'insère et c'est très gênant, si bien que j'ai passé une journée a essayer de les supprimer.
Par exemple si les bytes 124,125 et 126 étaient :
DA D5 0A
J'obtiens :
DA 0D D5 0A
Mais j'ai remarqué que ces caractères n'existaient pas dans les données de mon tableau mais apparaissaient uniquement à l'écriture dans un fichier. J'utilise Visual Studio.
Ma question est : Pourquoi ils sont là ces 0d ?
Je joint un bout de mon programme, qui ouvre et réécrit simplement le fichier bin sans le modifier :
Voila merci beaucoup d'avance.
Firo
Il me faut un programme en c++ pour traiter des données binaires.
J'ai un editor Hexadecimal et un fichier de données binaires codées en Little Endian, alors que l'editeur et d'autres programmes l'ouvrent en Big Endian
J'ai donc fait un tableau 1 dimension du fichier.
Il est facile de passer de l'un vers l'autre avec un programme c++, enfin j'y parviens, seulement quand je réécris le fichier bin converti, j'ai un caractère parasite qui apparait tous les 1000 bits, c'est a dire tous les 125 bytes dans l'hex editor.
A savoir (0d) (qui correspond en ASCII a ' je crois).
En tout cas tous les 1000 bits j'ai un 0d qui s'insère et c'est très gênant, si bien que j'ai passé une journée a essayer de les supprimer.
Par exemple si les bytes 124,125 et 126 étaient :
DA D5 0A
J'obtiens :
DA 0D D5 0A
Mais j'ai remarqué que ces caractères n'existaient pas dans les données de mon tableau mais apparaissaient uniquement à l'écriture dans un fichier. J'utilise Visual Studio.
Ma question est : Pourquoi ils sont là ces 0d ?
Je joint un bout de mon programme, qui ouvre et réécrit simplement le fichier bin sans le modifier :
int main() { ifstream::pos_type size; char * data; //Mon tableau ifstream file ("Fichier.bin", ios::in|ios::binary|ios::ate); //Ouverture du fichier if (file.is_open()) { int k=0; size = file.tellg(); //Taille du fichier pour definir le tableau data = new char [size]; //Tableau de la bonne taille file.seekg (0, ios::beg); file.read (data, size); //On lit le fichier du debut à la fin file.close(); //Tout le contenu est en mémoire, on ferme ofstream Nouveau; Nouveau.open ("Output.txt"); //On ouvre un nouveau fichier pour reecrire for (int i=0; i< (int) size; i++) { Nouveau<<data[i]; //On écrit, mais les 0d apparaissent } Nouveau.close(); delete[] data; } else cout << "Open file : error"; //Si le fichier n'a pas été ouvert return 0; }
Voila merci beaucoup d'avance.
Firo
A voir également:
- Gestion de fichiers binaires
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Explorateur de fichiers - Guide
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide