Bonjour à tous,
J'ai voulu commencer à créer un parseur de fichier SWF en C++ mais j'ai un petit problème que je n'arrive pas à résoudre.
En effet, mon programme "saute" le 4ème octet sans aucune raison apparente, ce qui décale tout le reste et me donne des valeurs absurdes x)
Voilà mon code qui lit le header du fichier :
void SwfFile::parseHeader()
{
// On vérifie la compression du fichier
m_swf >> m_compression;
printf("%X ", m_compression);
// On vérifie le reste de la signature
unsigned char sig1,sig2;
m_swf >> sig1;
printf("%X ", sig1);
m_swf >> sig2;
printf("%X ", sig2);
m_isSwf = (sig1 == 0x57 && sig2 == 0x53);
if(!m_isSwf)
return;
m_swf >> m_version; // Doit donner 10
printf("%X ", m_version);
m_swf >> m_size; // Doit donner 7 926 480
printf("%X ", m_size);
}
Voici le .h de la classe
#ifndef SWFFILE_H_INCLUDED
#define SWFFILE_H_INCLUDED
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
enum SwfCompression : unsigned char { NONE = 0x46, ZLIB = 0x43, LZMA = 0x5A };
class SwfFile
{
public:
SwfFile();
void open(string filepath);
void close();
void parseHeader();
private:
ifstream m_swf;
unsigned char m_compression;
bool m_isSwf;
unsigned char m_version;
unsigned long int m_size;
};
#endif // SWFFILE_H_INCLUDED
Lorsque j'exécute le code, j'obtiens :
Loading Image
Alors que quand je regarde mon SWF avec HxD par exemple :
Loading Image
Le fichier avec lequel je test est le DofusInvoker.swf, comme ça je connais les valeurs que je dois obtenir avec ma classe.
Le problème est que je ne comprends pas pourquoi mon programme "saute" le caractère OA :/
Donc si quelqu'un a une idée sur comment résoudre ce problème, je lui en remercie d'avance ! :)
PS : Joyeux Nowel à tous !