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
je vous joins mon fichier 20230620.zip
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; }
merci d'avance
Partager