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 :

écrire en binaire ?


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Par défaut écrire en binaire ?
    Hello tout le monde, j'ai un petit souci lors de l'utilisation de la méthode std::ofstream

    voila, donc j'ai des valeurs de type hexa, ressemblant plus ou moins a ca :

    "0000800E080B36BAEA3F520..." (std::string plus précisément)

    je souhaite ajouter ces valeurs dans un fichier, mais de manière à obtenir ca :

    " € 6ºê?R u" soit leur conversion ASCII, ceci afin de pouvoir traiter le fichier avec un autre logiciel.

    Quelqu'un aurait il une idée ?

    jusqu'a présent j'en étais arrivé la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
      std::ofstream fichier_vid("test_vid.txt", std::ios_base::app |
      std::ios_base::binary);
      fichier_vid << trame_video;
      fichier_vid.close();
    avec trame_video, le contenu hexa de ma trame.

  2. #2
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Utilise la fonction membre write()

    : http://c.developpez.com/faq/cpp/?pag...ERS_read_write

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Par défaut
    bon ben je dois pas savoir lire correctement mais lorsque j'utilise l'exemple suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      std::ofstream FileOut("Toto.txt", std::ios_base::binary);
      int xout = 24;
      FileOut.write(reinterpret_cast<const char*>(&xout), sizeof(int));
      FileOut.close();
    je fais juste l'écriture en binaire de 24 dans toto.txt ? ou de son adresse ?

    parce que lorsque je lis le fichier avec utlraedit : je vois ca (en hexa)

    00000000h: 18 00 00 00 ; ....

    or j'aimerais à la limite quelque chose du style :

    00000000h: 24 00 00 00 ; ....

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Thordax
    parce que lorsque je lis le fichier avec utlraedit : je vois ca (en hexa)

    00000000h: 18 00 00 00 ; ....

    or j'aimerais à la limite quelque chose du style :

    00000000h: 24 00 00 00 ; ....
    18 en hexa, c'est 24 en decimal.

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Par défaut
    oui, donc ma question a été mal posée, Cf. plus bas


    en fait pour reprendre plus clairement le fond du probleme, et en me servant de ultraedit et de la représentation hexa, je souhaiterais obtenir

    depuis la chaine :

    0000800E080B36BAEA3F520E20127587
    995455770C43C603F20D0A15F3A2B90B
    B1B72E8F2064DB150F69243C59D07E6C
    7AE993EC944A0CA5CBD50F2F0D0A42C5
    9F1966E766B00BBA732029E0CE120F52
    F1AAEA49999A23963E7ECF0191941426
    A98FD251E780C82A85742073047A0405
    7FF0FE98FD31FA2051019A040574A070
    0C82A856FF10394C7E94FD281C053839
    405499E053963DFA27D21FA13F47
    le résultat suivant :

    00015676h: 00 00 80 0E 08 0B 36 BA EA 3F 52 0E 20 12 75 87 ; ..€...6ºê?R. .u‡
    00015686h: 99 54 55 77 0C 43 C6 03 F2 0D 0A 15 F3 A2 B9 0B ; ™TUw.CÆ.ò...ó¢¹.
    00015696h: B1 B7 2E 8F 20 64 DB 15 0F 69 24 3C 59 D0 7E 6C ; ±·. dÛ..i$<YÐ~l
    000156a6h: 7A E9 93 EC 94 4A 0C A5 CB D5 0F 2F 0D 0A 42 C5 ; zé“ì”J.¥ËÕ./..BÅ
    000156b6h: 9F 19 66 E7 66 B0 0B BA 73 20 29 E0 CE 12 0F 52 ; Ÿ.fçf°.ºs )àÎ..R
    000156c6h: F1 AA EA 49 99 9A 23 96 3E 7E CF 01 91 94 14 26 ; ñªêI™š#–>~Ï.‘”.&
    000156d6h: A9 8F D2 51 E7 80 C8 2A 85 74 20 73 04 7A 04 05 ; ©ÒQç€È*…t s.z..
    000156e6h: 7F F0 FE 98 FD 31 FA 20 51 01 9A 04 05 74 A0 70 ; ðþ˜ý1ú Q.š..t p
    000156f6h: 0C 82 A8 56 FF 10 39 4C 7E 94 FD 28 1C 05 38 39 ; .‚¨Vÿ.9L~”ý(..89
    00015706h: 40 54 99 E0 53 96 3D FA 27 D2 1F A1 3F 47 ; @T™àS–=ú'Ò.¡?G

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Tu prends ta chaine, tu l'interpretes (2 characteres dans ta chaine vers un byte dans un buffer), tu ecris le buffer.

    Je ne vois pas de problemes, meme s'il n'y a pas de fonction faisant ca d'un coup..

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Par défaut
    tu es sur ? et cela écrira ca dans le fichier (en gras) :


    00015676h: 00 00 80 0E 08 0B 36 BA EA 3F 52 0E 20 12 75 87 ; ..€...6ºê?R. .u‡
    00015686h: 99 54 55 77 0C 43 C6 03 F2 0D 0A 15 F3 A2 B9 0B ; ™TUw.CÆ.ò...ó¢¹.
    00015696h: B1 B7 2E 8F 20 64 DB 15 0F 69 24 3C 59 D0 7E 6C ; ±·. dÛ..i$<YÐ~l
    000156a6h: 7A E9 93 EC 94 4A 0C A5 CB D5 0F 2F 0D 0A 42 C5 ; zé“ì”J.¥ËÕ./..BÅ
    000156b6h: 9F 19 66 E7 66 B0 0B BA 73 20 29 E0 CE 12 0F 52 ; Ÿ.fçf°.ºs )àÎ..R
    000156c6h: F1 AA EA 49 99 9A 23 96 3E 7E CF 01 91 94 14 26 ; ñªêI™š#–>~Ï.‘”.&
    000156d6h: A9 8F D2 51 E7 80 C8 2A 85 74 20 73 04 7A 04 05 ; ©ÒQç€È*…t s.z..
    000156e6h: 7F F0 FE 98 FD 31 FA 20 51 01 9A 04 05 74 A0 70 ; ðþ˜ý1ú Q.š..t p
    000156f6h: 0C 82 A8 56 FF 10 39 4C 7E 94 FD 28 1C 05 38 39 ; .‚¨Vÿ.9L~”ý(..89
    00015706h: 40 54 99 E0 53 96 3D FA 27 D2 1F A1 3F 47 ; @T™àS–=ú'Ò.¡?G
    ?

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 156
    Par défaut
    Jean-Marc.Bourguet => merci bien !

    mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for(int i=0;i<trame_video.size();i = i+2){
       std::istringstream iss(trame_video.substr(i, 2));
          int n;
          if( iss >> std::hex >> n )
          {
             fichier_vid << char(n);
          }

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

Discussions similaires

  1. Module pour écrire en binaire
    Par sperca dans le forum Caml
    Réponses: 14
    Dernier message: 07/09/2010, 20h39
  2. fichier - écrire en binaire
    Par lXT95l dans le forum Général Python
    Réponses: 2
    Dernier message: 29/12/2007, 23h21
  3. Réponses: 12
    Dernier message: 26/07/2006, 12h08
  4. écrire en binaire
    Par fabetvince dans le forum C
    Réponses: 11
    Dernier message: 21/05/2006, 10h04
  5. Comment écrire une adresse binaire
    Par jafo65 dans le forum C
    Réponses: 2
    Dernier message: 04/05/2006, 23h51

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