Bonjour,

J'ouvre un fichier via ifstream.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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]);
J'affiche ensuite cette variable pour vérification.
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é.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
		cout << static_cast <int> ('i') << "\n";
		cout << static_cast <int> ('Ä') << "\n";
J'obtiens ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
D'où cela peut-il venir? Si je rajoute 256 à -60 j'obtiens bien 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.