Lecture fichier : char inférieur à 0
Bonjour,
Ceci est mon premier post sur ce forum. J'ai une année de pratique du C++.
---
Voici ma question :
Ce petit bout de code me donne un resultat que je trouve étrange :
Il s'agit d'ouvrir un fichier bmp et d'en lire les 5 premiers caractères
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
ifstream fichier("test.bmp", ios::in | ios::binary);
for(short int i = 0; i<5; ++i)
{
char c;
fichier.get(c);
cout<<(int) c<<endl;
}
fichier.close(); |
Sortie :
On remarque que les deux premiers caractères (66 et 77) correspondent respectivement au 'B' et 'M' de l'en-tête du fichier BMP.
Seulement, pourquoi est-ce que les deux caractères suivants sont négatifs ?
De plus, si on exécute cet autre bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
ifstream f("test.bmp", ios::in | ios::binary);
int i = 0;
char c[2];
f.read( &c[0], sizeof(char) );
f.read( &c[1], sizeof(char) );
f.read( (char *) &i, sizeof(int) );
cout<< c <<endl;
cout<< i <<endl;
f.close(); |
on obtient :
Où 907 256 correspond à la taille du fichier bmp en octet (cf. résumé sur le format bmp : http://andrew.csie.ncyu.edu.tw/zip/Bmp1.htm)
Ne devrais-je pas avoir en sortie:
?
Je vous remercie d'avance pour vos réponses
Damien
---
Note : voici le début de l'en-tête d'un fichier bmp
+--------+--------+--------+--------+
| Char 'B' | Char 'M'| Taille en [...] |
+--------+--------+--------+--------+
| octets du fichier |
+--------+--------+--------+--------+