IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Lecture d'Offset d'un fichier


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Par défaut Lecture d'Offset d'un fichier
    Hello

    je suis débutant en C#, et je galère comme tous les débutants ..

    je veux recup des données dans un fichier

    ces données sont du type USTR ou DWORD avec une taille de 4a60 octects et se trouvant a l'offset 0x0010 par exemple

    j'ai du mal a capter .. quelqu'un pourrait m'expliquer le principe ou l'algo pour ce genre de traitement ?

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Par défaut
    Salut,

    C'est assez simple, tu as de la Data écrit en binaire dans un fichier que tu dois lire via un BinaryReader.

    Une position => la position de ton curseur de lecture (il correspond à la position d'un Byte)
    Un Offset => c'est un décalage. En gros si tu veux dire que tu veux te positionner à +100 bytes depuis le début du fichier tu vas écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monBinaryReader.Seek(Begin, 100);
    Tu vas te positionner depuis le début du fichier (Begin étant un enum) à +100 byte vers l'avant.

    En suite il faut connaître les types que tu utilises et leurs tailles:
    int : 4 bytes
    long : 8 bytes
    ...
    String : variables en fonction de la chaine avec une entête qui permet de connaitre la taille. La fonction ReadString() d'un BinaryReader le fait bien
    Pour le string ce n'est peut être pas tout à fait exact mais le principe est là.

    Ensuite si tu sais comment est écrite ta Data alors il te sera facile de la lire.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Par défaut
    ok merci je vois un peu plus le truc ... meme si de coder ensuite c'est autre chose lol

    par contre si on me dit

    offset 0x0010 ou 0x004C : c'est un décalage de combien ? on peut monBinaryReader.Seek(Begin, 0x004C) ?

    le Bégin c'est toujours 000000000 ?

    Merci !

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Par défaut
    Le Begin c'est la position 0 c'est sur...

    Pour ce qui est de ton OffSet, c'est écrit en Hexa il faut donc décoder.

    0x004C = 76

    Tu as des méthodes pour le faire dans l'API DotNet.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Par défaut omfg
    j'arrive pas..

    •OS Version: Offset 00, Length of 4 bytes (LE) •0000001A: Windows 8

    •File header: Offset 04, Length of 4 bytes •SCCA (0×53, 0×43, 0×43, 0×41)

    •Last executed time: Offset 120, Length of 8 bytes (LE), Windows Filetime format

    •Executed count: Offset 208, length of 4 bytes (LE)

    j'ouvre le fichier avec un editeur hexa et je vois pas le rapport ..

    si quelqu'un peut m'expliquer.. merci

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par morgand Voir le message
    Pour ce qui est de ton OffSet, c'est écrit en Hexa il faut donc décoder.

    0x004C = 76
    Bah non, pourquoi veux-tu décoder ? Tu peux très bien écrire la valeur hexa dans le code C#...

    Citation Envoyé par puke502 Voir le message
    j'arrive pas..

    •OS Version: Offset 00, Length of 4 bytes (LE) •0000001A: Windows 8

    •File header: Offset 04, Length of 4 bytes •SCCA (0×53, 0×43, 0×43, 0×41)

    •Last executed time: Offset 120, Length of 8 bytes (LE), Windows Filetime format

    •Executed count: Offset 208, length of 4 bytes (LE)

    j'ouvre le fichier avec un editeur hexa et je vois pas le rapport ..

    si quelqu'un peut m'expliquer.. merci
    Tu peux montrer le début du contenu du fichier (en hexa) ?

Discussions similaires

  1. lecture d'éléments dans mon fichier
    Par gillou4 dans le forum C
    Réponses: 9
    Dernier message: 23/10/2005, 16h19
  2. lecture et diffusion d'un fichier audio
    Par stem dans le forum Windows
    Réponses: 5
    Dernier message: 22/10/2005, 21h53
  3. Réponses: 5
    Dernier message: 03/06/2005, 14h06
  4. Problème lecture de nombre dans un fichier en c++
    Par knecmotet dans le forum C++
    Réponses: 1
    Dernier message: 28/10/2004, 15h48
  5. Réponses: 2
    Dernier message: 26/09/2003, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo