Partage
  • Partager sur Facebook
  • Partager sur Twitter

BinToHex

[Programme C++]

Sujet résolu
    30 septembre 2008 à 14:06:27

    Voilà salut les amis...

    Je suis apprenant informaticien et je dois faire un exercice de conversion Binaire vers Hexadécimal...

    Mon problème c'est que mon programme doit lire dans un fichier ".bin" et me le traduire à l'écran en hexa...

    Je pensais que ça allait être facile... mais dans le fichier ".bin" je trouve ça :

    Citation : fichier.bin

    AA%nõ©
    AA%nZ
    AA%nh
    AA%nƌ
    AA%nV
    AA%nq#
    AA%nà«
    AA%nÖ‡
    AA%o/m
    AA%okTt
    AA%oa/
    AA%oò
    ´



    Mon maitre d'apprentissage me certifie que c'est du binaire... je comprends vraiment pas comment faire


    Donc si quelqu'un pouvait m'aider...


    Merci d'avance, TinyTiger
    • Partager sur Facebook
    • Partager sur Twitter
      30 septembre 2008 à 14:17:28

      Le binaire n'est qu'une vue de l'esprit.
      Dans l'absolu, tout ce que tu as, c'est toujours des séquences de bits. Après, il faut voir comment tu les interprètes (octet, caractère, etc).

      => lis la valeur numérique de chaque (séquence d') octet, et affiche cette valeur (numérique) dans un format textuel humainement compréhensible.

      Joue avec des utilitaires comme xxd (systématiquement distribué avec vim), cela pourra peut-être te permettre de mieux appréhender les problèmes d'interprétation et de représentation des données.
      • Partager sur Facebook
      • Partager sur Twitter
      C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
        30 septembre 2008 à 14:31:22

        Déjà merci pour vos réponse rapide ;)

        (Pour ma part, je vais faire joujou avec un éditeur comme tu viens de me le conseiller...)

        Voilà le bout du code ou je suis bloquer...

        cout << "Veuiller indiquer le nom du fichier : "; cin >> NomDuFichier;
                    cout << "Vous essayer d'ouvrir le fichier '" << NomDuFichier << "' !" << endl << endl;
                    
                    fichier = fopen(NomDuFichier, "r+");
                    
                    if (fichier != NULL)
                    {
                         cout << "Ouvertur du fichier '" << NomDuFichier << "' reussit !" << endl << endl;
                         
                         for(cnt = 1;cnt <= 10; cnt = cnt + 1)
                         {
                         fscanf(fichier, "%s", &mot);
                         printf("%s  ", mot);
                         }
        
                         printf("\n\n");
         
                         fclose(fichier);
        
                    }
                    else
                    {
                        // On affiche un message d'erreur si on veut
                        cout << "Impossibile d'ouvrir '" << NomDuFichier << "' !" << endl << endl;
                    }
        


        Il m'affiche la même chose que si j'ouvrais le fichier ".bin" avec un éditeur de texte, alors que j'aimerais le transformer en hexa. :euh:
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          30 septembre 2008 à 14:55:07

          Les fstream sont plus '++' que les FILE*.

          Il y a un tuto sur ce site (non officiel).

          Sinon, c'est pas le bon flag, tu devrais spécifier que tu lis un fichier binaire. (Flag 'b' ? )
          • Partager sur Facebook
          • Partager sur Twitter
            30 septembre 2008 à 15:21:55

            Je m'en vais de ce pas, voir le tuto non-officiel...

            Pour le flag... j'avais déjà essayer le "%b" mais ça ne fonctionne pas...

            Je sais que pour l'hexadécimal c'est "%x", pour l'octal "%o" et pour le décimal "%d" mais pour le binaire... j'ai jamais su... :-°
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              30 septembre 2008 à 15:32:32

              Je pensais plus à l'ouverture qu'à la lecture. [En tout cas en PHP le flag b existe.]
              • Partager sur Facebook
              • Partager sur Twitter
                30 septembre 2008 à 16:23:43

                Voilà j'ai réussis le programme...

                enfaite... j'étais dans la fausse direction

                if (pfichier != NULL)
                            {
                                 cout << "Ouvertur du fichier '" << NomDuFichier << "' reussit !" << endl << endl;
                                 
                                 do
                                 {
                                        c = fgetc(pfichier); // On lit le caractère
                                        
                                        if(c == EOF)
                                        {
                                        break;     
                                        }
                                        
                                        caractereActuel = c & 0XFF;
                                        
                                        printf("%02X ", caractereActuel); // On l'affiche    
                                        
                                        // A chaque fois qu'il y a 0A sa signifie un retour à la ligne
                                        if(caractereActuel == 0X0A)
                                        {
                                             printf("\n");
                                        }
                                               
                                 }while(c != EOF);
                
                                 printf("\n\n");
                 
                                 fclose(pfichier);
                
                            }
                            else
                            {
                                // On affiche un message d'erreur si on veut
                                cout << "Impossibile d'ouvrir '" << NomDuFichier << "' !" << endl << endl;
                            }
                


                Si vous voulez, on lis le fichier binaire caractère par caratère et chaque caractère et transformer en hexadécimal...

                Merci pour votre aide ;)
                • Partager sur Facebook
                • Partager sur Twitter

                BinToHex

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown