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 :

Manipuler des fichiers binaires en csharp


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Manipuler des fichiers binaires en csharp
    Bonjour,

    Avant d'y passer qq nuits, j'aimerais un avis sur la question

    1- J'ai souvent entendu dire que cSharp ne permettait pas (en tout cas facilement) de manipuler des fichiers binaire ou hybrides

    2- J'ai emballé en C diferentes structures de données dans qq fichier de type hybride (un header longueur fixe, des tableaux de structure binaires contenant des int, des char et des offset int pointant sur des chaines zstring) (rien de tres extraordinaire)

    3- Je me demande maintenant s'il sera plus facile de bricoler la lecture de ces fichiers directement en csharp ou si j'ai intéret a faire une dll C qui fera sa propre gestion de lecture du fichier

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Connais-tu la classe BinaryReader ?

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    Merci
    Non pas encore, mais je vais essayer !

  4. #4
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour

    J'hesite a ouvrir une nouvelle discussion
    J'essaye ici d'abord

    J'experimente la classe binaryreader.
    Jusqu'ici tout va bien et je pense que je parviendrai a faire ce qu'il faut

    MAIS

    Je dois lire des structure en fichier composées de

    char[5] nom; (5 bytes avec un \0 au dernier byte)
    int a;
    int b;

    Pour les deux int pas de problème
    Mais pour declarer nom dans une variable csharp, je suis perdu.

    Sachant que nom est une chaine de byte et doit etre comparé avec un string, comment dois je le declarer
    1- Pour etre lu facilement
    2- Pour etre comparé avec le string

    Pour la lecture
    Basiquement je peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte nom = new byte[5];
    Mais je voulais le mettre dans une structure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct mastruct
    {
      byte nom = new byte[5];
      int a;
      int b;
    }
    Mais dans une structure je ne peux pas faire new
    Donc je mets dans une classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class maclass
    {
      byte nom = new byte[5];
      int a;
      int b;
    }
    Soit,

    Mais donc j'ai maintenant des array de bytes que je veux comparer a un string

    Tout est bien sur possible mais quelle serait globalement la meilleure approche

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Utilise l'encodage que tu souhaites pour obtenir ta chaîne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                Byte[] bytes = new Byte[2]{65,66};
                String bytesValue = Encoding.ASCII.GetString(bytes);

  6. #6
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci

    Oui ce que tu propose est effectivement de lire 5 bytes et de les convertir en string avec Encoding.ASCII.GetString(bytes);

    1- Mais le byte 5 est un \0 comment sera-til interpreté ?
    2- En définitive c'est pour comparer ce array de byte avec 1 string

    Je me demande si c'est plus efficace de convertir un ensemble d'array de byte en string pour les comparrer avec un string
    Ou de converti un string en array de byte a comarer avec les autres ?

Discussions similaires

  1. Comment manipuler des fichiers binaires ?
    Par yrejk dans le forum C++
    Réponses: 1
    Dernier message: 15/04/2008, 19h40
  2. manipulation des fichiers
    Par felicity dans le forum C
    Réponses: 2
    Dernier message: 29/12/2005, 01h11
  3. [Postgres]comment inserer des fichier binaires ?
    Par amin001 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 24/12/2005, 01h40
  4. Réponses: 1
    Dernier message: 27/11/2005, 14h30
  5. Manipulation des fichiers
    Par monsau dans le forum Langage
    Réponses: 7
    Dernier message: 21/09/2004, 17h45

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