Ecriture dans un fichier binaire
Bonjour,
Je développe dans quelques langages, mais je débute en C++.
J'essaie de créer et copier des fichiers bitmap à partir d'une classe Bitmap en utilisant des structures des différents headers d'une image bitmap.
Le programme fonctionne presque, j'ai juste un problème au niveau du premier header :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
typedef struct {
// unsigned short type; /* Les caractères "BM" qui indiquent le type du fichier */
unsigned char type1; /* Les caractères "BM" qui indiquent le type du fichier */
unsigned char type2; /* Les caractères "BM" qui indiquent le type du fichier */
unsigned int size; /* La taille totale du fichier */
unsigned short reserved1; /* réservé pour stocker l'application d'origine */
unsigned short reserved2; /* réservé pour stocker l'application d'origine */
unsigned int offset; /* Adresse de l'offset où commence le stockage des pixels de l'image */
} BmpFileHeader; |
Quand j'initialise mon objet bitmap de cette façon (où FH est de type BmpFileHeader) :
Code:
1 2 3 4 5
|
// this->FH.type=19778;//=>BM
this->FH.type1='\x42';//=>B
this->FH.type2='\x4D';//=>M
this->FH.size=(unsigned int)(this->IH.height*this->IH.width*3+54);//dans l'exemple, 120054 |
Je me retrouve dans mon fichier avec ces octets suivants :
Code:
42 4D 3B 00 F6 D4 01 00
au lieu de :
J'ai remplacé la variable initiale type de type unsigned short par deux variables de type char, le problème reste le même.
J'ai vérifié la taille des char, short et int avec des sizeof, mais ça correspond bien à ce qui est attendu (1 pour le char, 2 pour le short et 4 pour les int).
Si je modifie l'ordre des variables dans la structure, il y a toujours 2 octets en plus après les octets 42 4D.
Si je vire les deux octets en trop, mon fichier est bien interprété et affiché comme une image bitmap.
Je travaille sous Windows avec NetBeans ou DevCpp.
Si quelqu'un a une idée, je suis preneur, je ne sais pas d'où peuvent venir ces octets supplémentaires.
Merci d'avance.