bonjour tout le monde

j'essaie d'écrire un petit programme qui lit des octet précises dans un fichier binaire pour en extraire des données "lisible"
mais j'ai un petit problème, a un moment je dois lire 2 octets pour obtenir l'année du fichier et je n'y arrive pas pourriez vous me donner un petit coup de main

voila mon bout de code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
 
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
 
int main()
{
 
	std::vector<std::vector<char>> ver ;
	std::ifstream fgrb("20230620.grb", std::ios::in | std::ios::binary);
 
        /// date et heure du fichier
	std::string annee; std::string mois;  std::string jour;
 
        ///lecture Octet 28 à 29 pour année
 
	fgrb.seekg(28);    /// devrait lire 07 en hexadécimal
	fgrb.seekg(29);    /// devrait lire E7 en hexadécimal
	char y1;
	fgrb.read((&y1), 1);
	char y2;
	fgrb.read((&y2), 1);
	annee = std::to_string(static_cast<int>((y1 << 8) | y2));
	std::cout << "annee:" << annee << std::endl;      /// donne -6394  (E7 06 en hexa) ce qui correspond aux octets 29 et 30?
 
       /// lecture Octet 30 pour mois
 
	fgrb.seekg(30);  
	char m;
	fgrb.read((&m), 1);
	mois = std::to_string(static_cast<int>(m));
	std::cout << "mois:" << mois << std::endl;
 
       /// lecture Octet 31 pour jour
 
	fgrb.seekg(31);  
	char j;
	fgrb.read((&j), 1);
	jour = std::to_string(static_cast<int>(j));
	std::cout << "jour:" << jour << std::endl;
 
 
	std::cout << "date du fichier:" << jour << "-" << mois << "-" << annee << std::endl;
 
	fgrb.close();
 
        return 0;
 
}
je vous joins mon fichier 20230620.zip


merci d'avance