Bonjour,

Je voudrais extraire les donnée d'un fichier binaire et les stocker dans des variables.

Les premiers bits du fichiers sont des caracteres, je les extraits grace a cette fonction :

(FileIO est un fstream)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
void FileIO::readMachineEndian(char& aNumber) {
   this->read(&aNumber, sizeof(aNumber));
}
Jusqu'ici ça marche. Mais je voudrais convertir les blocs de bit suivant directement en un long, et non en caractere, j'utilise donc la fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
void FileIO::readMachineEndian(long& aNumber) {
   this->read((char*)&aNumber, sizeof(aNumber));
}
Le flux de 4 bloc est en exa 00 00 00 06.
Je devrais onc obtenir la valeur 6 dans aNumber.
Or la valeur obtenue est 100663296...

Pourquoi cette incohérence ?

Merci d'avance.