Bonjour,
J'ouvre un fichier via ifstream.
J'affiche ensuite cette variable pour vérification.Code:
1
2
3
4
5
6
7
8
9
10
11
12 std::ifstream fichier_in("D:/test.data" , ios::in | ios::binary); if (!(fichier_in.is_open())) { return 1; } int size; fichier_in.seekg (0, fichier_in.end); //fin du fichier size = fichier_in.tellg(); //position buffer = new char [size]; fichier_in.seekg (0); //fichier_in.seekg (0, fichier_in.beg); fichier_in.read (buffer, size); fichier_in.close(); variable = static_cast <int> (buffer[4]);
Je fait cette opération à plusieurs endroits du fichier.
Mais j'obtiens des résultats bizarres que j'arrive à reproduire en utilisant directement le caractère concerné.
J'obtiens ceci:Code:
1
2 cout << static_cast <int> ('i') << "\n"; cout << static_cast <int> ('Ä') << "\n";
D'où cela peut-il venir? Si je rajoute 256 à -60 j'obtiens bien 196.Code:
1
2 105 <= ok, dans mon fichier c'est 69 en hexa donc 105 -60 <= ko, dans mon fichier c'est c4 en hexa donc ce devrait être 196
Le résultat serais toujours compris entre -127 et 128 ? J'aurais aimé avoir 196 dès le début.
Sinon, est-ce la bonne méthode pour convertir les lettres du fichier en int?
Merci d'avance.