Je lis des données binaires à partir d'un fichier, mais lire un octet à la fois donne les résultats attendus, mais pas plus d'un octet à la fois. Lire un à la fois:Le fichier binaire lit des résultats différents pour la quantité d'octets lus à la fois
void readFile(){
std::ifstream in;
in.open("file.bin", std::ios:binary);
uint8_t byte1;
uint8_t byte2;
in.read(reinterpret_cast<char *>(&byte1), sizeof(byte1));
in.read(reinterpret_cast<char *>(&byte2), sizeof(byte2));
std::cout << std::bitset<8>(byte1) << std::bitset<8>(byte2);
}
Cela produit le résultat attendu de
0000101000000110
lecture deux à la fois:
void readFile(){
std::ifstream in;
in.open("file.bin", std::ios:binary);
uint16_t twobytes;
in.read(reinterpret_cast<char *>(&twobytes), sizeof(twobytes));
std::cout << std::bitset<16>(twobytes);
}
produit une sortie inattendue de
0000011000001010
Oh, bien sûr! L'échange de l'endianness a abouti à la sortie dont j'avais besoin. Merci! – MalusPuer