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 :

génération de fichiers Ascii


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Par défaut génération de fichiers Ascii
    Bonjour,

    Comment s'y prend-on pour convertir un string en hexa (ou binaire ou décimale) de manière à produire, créer un fichier sous sa forme Ascii ?

    En gros, au lieu de "binder" (je n'aime pas trop ce mot m'enfin il traduit assez bien ce que je cherche à faire...) un fichier quelconque en ressources binaire, comment fait-on pour que le fichier soit directement généré depuis son propre code ?

    Merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 26
    Par défaut
    Bonjour
    je crois que si tu nous donnais un exemple de ce que tu veux faire, ca serait plus compréhensible....

    tu veux stocker une chaine "abcd" dans un fichier sous la forme
    - 0x410x420x430x44? si c'est ca y'a pas de traitement, c'est comme ca que ca marche...
    -41424344?
    etcetc

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Tu peux très bien generé des fichier binaire en c++. Il suffit juste d' ouvrir le fichier avec: FILE* fichier=fopen("mon_fifhier.txt","wb ou rb"); et les operations de lectures et d' ecriture se font avec fread et fwrite. Tu as àchoisir entre wb et rb selon qu' il s' agit d' une lecture ou d' une ecriture dans le fichier binaire.

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par darrylsite Voir le message
    Tu peux très bien generé des fichier binaire en c++. Il suffit juste d' ouvrir le fichier avec: FILE* fichier=fopen("mon_fifhier.txt","wb ou rb"); et les operations de lectures et d' ecriture se font avec fread et fwrite. Tu as àchoisir entre wb et rb selon qu' il s' agit d' une lecture ou d' une ecriture dans le fichier binaire.
    FILE* fichier=fopen("mon_fifhier.txt","wb"); c'est plus du C.
    en C++ c'est plustôt
    std::ofstream("mon_fifhier.txt",std::ios::binary);

  6. #6
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Par défaut
    Citation Envoyé par juzam Voir le message
    Bonjour
    je crois que si tu nous donnais un exemple de ce que tu veux faire, ca serait plus compréhensible....
    Si je pouvais te donner un exemple, ça voudrait dire que je saurais le faire !

    Bon, quelque chose dans ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
          std::istringstream val ("E82601BAEC02BE" );
     
       std::ofstream out ("Out.txt", std::ios::binary);
        out << val.rdbuf ();
    ...mais rien à faire ça ne le sort toujours pas en caractère Ascii.

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par sansblague Voir le message
    Si je pouvais te donner un exemple, ça voudrait dire que je saurais le faire !

    Bon, quelque chose dans ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
          std::istringstream val ("E82601BAEC02BE8" );
     
       std::ofstream out ("Out.txt", std::ios::binary);
        out << val.rdbuf ();
    ...mais rien à faire ça ne le sort toujours pas en caractère Ascii.
    tu veut traduire E8 26 01 BA EC 02 BE en ascii??
    et d'ou vienne ces valeurs?

  8. #8
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Par défaut
    C'est la représentation en hexa d'un fichier réduit juste pour l'exemple.

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Alors si j'ai bien compris, tu récupère des valeurs ecrite en hexa sur 2 caractère d'un fichier, et tu voudrais les traduire en ascii.
    C'est bien ca?

  10. #10
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Par défaut
    Je copie mettons avec winhex les données d'un fichier en hexa, j'insère ces données dans un string, et je souhaiterais recréer le fichier dans sa forme d'origine (ascii) à partir des données (en hexa) contenu dans le string.

    Excuses-moi, je ne sais pas comment l'expliquer autrement

  11. #11
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Je sui pas un spécialiste des flux.
    J'ai réussi en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    //flux d'entrée
    std::istringstream iss( "E82601BAEC02BE");
    //flux io
    std::stringstream ioss;
    std::string stmp;
    char car;
    unsigned int codehex;
     while(!iss.eof() && iss.good())
    	{
    	//copie de deux caractères
    	iss >>std::setw(2)>>stmp;
           //que l'on met dans le flux IO
    	ioss<<stmp; 
           //et l'on récupère par convertion string HEX -> unsigned int
    	ioss>>std::hex>>codehex; 
    	//caractère obtenue
    	 car =codehex;
    	}
    Mais je pense qu'il y as plus simple...

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 26
    Par défaut
    ou ca pour une version "a l'ancienne"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    // exemple : HexStringToChar("31253F") => "1%?"
    // exemple : HexStringToChar("1253F") == HexStringToChar("01253F") == <SOH>%?
    std::string BinaryTools::HexStringToChar(std::string s)
    {
      std::string ts;
      if(s.size() %2 == 1) s = "0" + s;
      std::string::const_iterator it=s.begin();
      char c=0;
      while(it!=s.end()) {
    	c=hextochar(*it)*16;
    	++it; 
    	c+=hextochar(*it);
    	++it; 
    	ts+=c;
      }
      s=ts;
      return s;
    }
     
    //hextochar('9') = 9
    //hextochar('A') = 10
    char BinaryTools::hextochar(char in)
    {
      char out=0;
      if(in>='0' && in <='9')
    	out=in-'0';
      else if (in>='a')
    	out=in-'a'+10;
      else if (in>='A')
    	out=in-'A'+10;
      return out;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Génération de fichier CODA
    Par Bernard123 dans le forum Access
    Réponses: 8
    Dernier message: 28/10/2005, 14h02
  2. [DOM] Génération dynamique fichier xml
    Par Fabouney dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 03/10/2005, 09h45
  3. lire un fichier ascii complexe
    Par alexum dans le forum C++
    Réponses: 9
    Dernier message: 16/02/2005, 09h05
  4. Import fichier ASCII dans une base
    Par pithier dans le forum Bases de données
    Réponses: 3
    Dernier message: 01/02/2005, 19h03

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