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++Builder Discussion :

Convertion hexa binaire


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut Convertion hexa binaire
    Je voudrais avoir un peut d'aide aussi pour la convertion hexa et binaire comment je pourrai proceder pour mon programme

  2. #2
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Voilà une solution peut etre pas des plus optimal, mais elle devrait fonctionner:

    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
    33
    34
    AnsiString HexaToBinaireChar( char aHex )
    {
      switch( aHex )
      {
        case '0' : return( "0000" );
        case '1' : return( "0001" );
        case '2' : return( "0010" );
        case '3' : return( "0011" );
        case '4' : return( "0100" );
        case '5' : return( "0101" );
        case '6' : return( "0110" );
        case '7' : return( "0111" );
        case '8' : return( "1000" );
        case '9' : return( "1001" );
        case 'A' : return( "1010" );
        case 'B' : return( "1011" );
        case 'C' : return( "1100" );
        case 'D' : return( "1101" );
        case 'E' : return( "1110" );
        case 'F' : return( "1111" );
        default  : return( "" );
      }
    }
     
    AnsiString HexaToBinaire( AnsiString aHex )
    {
      aHex = UpperCase( aHex ) ;
      AnsiString result ="" ;
      for( int i=1; i<= aHex.Length(); i++ )
      {
         result = result + HexaToBinaireChar( aHex[i] );
      }
      return( result ) ;
    }
    A utiliser de la facon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit1->Text = HexaToBinaire( "FF" );

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    désolé mais sa serait possible d'avoir quelque commentaire car j'ai un peut tu mal a comprendre et j'ai essayer le copier coller mais fonctionne pas trop il trouve des erreurs donc je pense qu'il doit manquer quelque truc donc si je pourrai avoir quelque commentaire merci

  4. #4
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Qu'est ce que tu as comme erreur? Parce que il n'y a rien de particulier d'utiliser.

    As tu déclaré les fonctions avant de les appeller?

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    voici mon . cpp
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
            //Declaration de variable
            AnsiString valhexa,valbinaire;
    
            //Recuperation de la valeur de Edit1 dans valhexa
            valhexa=Form1->Edit1->Text;
    
            AnsiString HexaToBinaireChar( char aHex )
    {
      switch( aHex )
      {
        case '0' : return( "0000" );
        case '1' : return( "0001" );
        case '2' : return( "0010" );
        case '3' : return( "0011" );
        case '4' : return( "0100" );
        case '5' : return( "0101" );
        case '6' : return( "0110" );
        case '7' : return( "0111" );
        case '8' : return( "1000" );
        case '9' : return( "1001" );
        case 'A' : return( "1010" );
        case 'B' : return( "1011" );
        case 'C' : return( "1100" );
        case 'D' : return( "1101" );
        case 'E' : return( "1110" );
        case 'F' : return( "1111" );
        default  : return( "" );
      }
    }
    
    AnsiString HexaToBinaire( AnsiString aHex )
    {
      aHex = UpperCase( aHex ) ;
      AnsiString result ="" ;
      for( int i=1; i<= aHex.Length(); i++ )
      {
         result = result + HexaToBinaireChar( aHex[i] );
      }
      return( result ) ;
    }
    }
    voici mon .h

    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
    //---------------------------------------------------------------------------
     
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
            TLabel *Label1;
            TLabel *Label2;
            TLabel *Label3;
            TEdit *Edit1;
            TEdit *Edit2;
            TButton *Button1;
            void __fastcall Button1Click(TObject *Sender);
    private:	// Déclarations de l'utilisateur
    public:		// Déclarations de l'utilisateur
            __fastcall TForm1(TComponent* Owner);
            AnsiString HexaToBinaire( char aHex );
            AnsiString HexaToBinaireChar( AnsiString aHex );
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    Comme erreur j'ai

    Utilisation impropre de typedef 'AnsiString'
    ; manquant dans l'instruction

    Ligne en rouge

  6. #6
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Si tu a déclarer tes méthodes dans ta classe (comme tu l'a fais dans la partie public de ton .h) tu dois ajouter "TForm1" avant tes méthode dans ton *.cpp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    AnsiString TForm1::HexaToBinaireChar( char aHex )
    {
      //Le code
    }
     
    AnsiString TForm1::HexaToBinaire( char aHex )
    {
      //Le code
    }

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    J'ai reformuler le code

    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
    //Declaration de variable
            AnsiString valhexa,valbinaire;
     
            //Recuperation de la valeur de Edit1 dans valhexa
            valhexa=Form1->Edit1->Text;
     
            //Test sur la valeur d'hexa rentrer dans l'edit
            if(valhexa=='0') valbinaire="0000";
            if(valhexa=='1') valbinaire="0001";
            if(valhexa=='2') valbinaire="0010";
            if(valhexa=='3') valbinaire="0011";
            if(valhexa=='4') valbinaire="0100";
            if(valhexa=='5') valbinaire="0101";
            if(valhexa=='6') valbinaire="0110";
            if(valhexa=='7') valbinaire="0111";
            if(valhexa=='8') valbinaire="1000";
            if(valhexa=='9') valbinaire="1001";
            if(valhexa=='A') valbinaire="1010";
            if(valhexa=='B') valbinaire="1011";
            if(valhexa=='C') valbinaire="1100";
            if(valhexa=='D') valbinaire="1101";
            if(valhexa=='E') valbinaire="1110";
            if(valhexa=='F') valbinaire="1111";
     
            //Affichage du resultat dans Edit2
            Form1->Edit2->Text=valbinaire ;
    SI je marque 1,2,3,.....
    Sa fonctionne sa maffiche le bon binaire par contre si je marque A2, 1A,ect..

    La sa ne marche pas je voudrais savoir comment je pourrai faire pour que sa me donne le bon binaire merci

  8. #8
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Il y a deux fonction :

    AnsiString HexaToBinaireChar( char aHex )
    C'est une fonction qui prend un paramètre un char, et qui retourne la valeur binaire (sur 4 caractères)
    Cette fonction ne dois pas être appelé directement!!


    AnsiString HexaToBinaire( AnsiString aHex )
    C'est une fonction qui prend un paramètre un AnsiString, qui parcours cette chaîne caractère par caractère, et qui fais appelle a la fonction HexaToBinaireChar pour chaque charactère.


    Donc tu a juste a déclarer ces fonctions, puis pour les utiliser tu fais simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit1->Text = HexaToBinaire( Edit2->Text );
    Je ne vois pas ou tu bloque, il n'y a rien a modifier, les fonctions sont déja écrite!

  9. #9
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    Ok very good par contre juste un truc est ce que tu peux me marquer all commentaire car il y a des choses que je n'est pas compris surtout dans la seconde fonction

    Encore merci

  10. #10
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Version commentée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    AnsiString HexaToBinaire( AnsiString aHex )
    {
      aHex = UpperCase( aHex ) ; //on met tout en majuscule (au cas ou il y a des minuscule comme 3f => 3F)
      AnsiString result = "" ; 
      for( int i=1; i<= aHex.Length(); i++ ) //on parcours la chaine aHex caractère par caractère, donc de 1 (premier caractère) à aHex.Length() (nombre de caractère dans la chaîne)
      {
         result = result + HexaToBinaireChar( aHex[i] ); // pour chaque caractère hexa on recherche la correspondance binaire avec la fonction HexaToBinaireChar et on l'ajoute à la suite
      }
      return( result ) ; // on retourne la chaine
    }
    Pour comprendre exécute en mode pas à pas (F8 ou F7 pas à pas avancé) et regarde les différentes valeurs a chaque fois.

    Si en entrée tu as par exemple "F03", il y aura 3 itérations (car il y a 3 caractères) dans la boucle FOR, et la valeur de result seront :

    Départ : result = ""
    1ère itération: result = "1111"
    2ème itération: result = "1111" + "0000" = "11110000"
    3ème itération: result = "11110000" + "0011" = "111100000011"

  11. #11
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    Possibiliter de rester en contacte avec toi via msn ou mail???

  12. #12
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Je passe régulièrement sur ce forum, donc si jamais tu rencontre un nouveau problème pose une nouvelle question ici.

    Tu trouvera quelqu'un pour te répondre.

    [je ne donne pas de coordonnées personnelles, désolé.]

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

Discussions similaires

  1. [T-SQL]convert champ binaire en char
    Par arona dans le forum Sybase
    Réponses: 5
    Dernier message: 31/07/2006, 12h57
  2. convertion hexadecimal -->binaire
    Par awax dans le forum Delphi
    Réponses: 5
    Dernier message: 16/06/2006, 19h35
  3. Conversion ascii=> hexa=>binaire
    Par grunk dans le forum C++
    Réponses: 3
    Dernier message: 27/11/2005, 18h45
  4. Convertion Hexa to déci en C
    Par duranton dans le forum C
    Réponses: 3
    Dernier message: 27/10/2005, 19h42
  5. conversion hexa-binaire
    Par jack69 dans le forum C
    Réponses: 8
    Dernier message: 04/04/2005, 16h33

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