Bonjour,
Pour expliquer succinctement mon problème, j'aimerais parser un fichier binaire dont je connais le format à l'aide de C++.
J'ai cherché maintes solutions / bibliothèques pour réussir à parvenir à mon objectif.
Le framework Boost semble proposer moult solutions comme :
- Les archives : mais cela me semble ne pas être adapté à mon besoin (1) et le framework semble utiliser un format propre à lui-même en ajoutant ses propres en-têtes (2) ;
- Le module Spirit de Boost : intéressant, mais je ne vois pas comment l'utiliser, d'autant plus qu'il n'y a pas de désérialisation, je crois ;
- La lib cereal, que j'ai testée, ne semble pas serializer correctement les données quand je teste leur code d'exemple ( http://uscilab.github.io/cereal/ ). J'obtiens un fichier binaire de quatre octets alors que le code serialize trois entiers, ce qui devrait faire au moins 12 octets (32 bits fois trois)…
Une autre question que je me pose : quand je "déserialise" un fichier binaire, dois-je travailler avec le concept d'archives ? De flux ? De "devices" ?
Exemple concret : si je veux "parser" un fichier image au format PNG, sachant que celui-ci contient un en-tête de huit octets (ou sept, je ne sais plus), puis des entiers représentant sa taille… Comment m'y prendre correctement ? Existe-t-il une solution déjà pensée et conçue pour ça ?
Je suis perdu avec toutes ces notions. Si quelqu'un pouvait m'éclairer sur la bonne manière de faire pour parser un fichier binaire et stocker des informations désérialisée dans des variables / attributs de classe, je suis preneur.
D'avance je vous présente mes excuses si mon message paraît maladroit / si c'est le cafouillis… C'est juste que mes connaissances en C++ sont très limitées et que j'aimerais les parfaire, tout naturellement.
Merci d'avance pour les âmes salvatrices qui daigneraient se pencher sur mon problème voire dissiper mes doutes et estomper ma grande détresse.