C/C++ Problème lors de la lecture d'un SWF

A

Anonymous

Invité
#1
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 :
Code:
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
Code:
#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 :


Alors que quand je regarde mon SWF avec HxD par exemple :


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 !
 
Haut Bas