1 pièce(s) jointe(s)
problème lecture fichier binaire
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:
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 Pièce jointe 640490
merci d'avance