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 :

Programme convertir hexadecimal


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Programme convertir hexadecimal
    Je cherche le moyen de faire une fonction qui converti un nombre positif quelconque en hexadecimal via cette fonction qui devra être utilisé


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char ConvertirHexa(int a)
    {
    if(a<10)
    return '0'+a;
    else
    return 'A'+a-10;
    }
    Donc la fonction ci dessus convertit de base 10 en base 16

    Je pense qu'il faudrait faire un logarithme pour determiner la taille du nombre puis voir par exemple pour 1000 si 1 est divisible par 16 si non, on fait avec 10, sinon avec 100 on divise on recupere le reste.... comme cela


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var = log(nbr)/(log(16);
    if(var != var) var+=1;
    Je sais il existe "hex" mais on peut pas l'utiliser comme c'est un boulot note qui a pour but de convertir un nombre d'hexa a decimal et inverse

    Le tout doit etre utilise sans aucune librairie (sauf celle de base ^^) donc pas d'appel de fonction qui fait quoi que ce soit

    Je vous remercie d'avance Wink


    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour convertir en chaîne sans précéder le nombre de zéros, je fais ça différemment:

    Je réserve sur la pile un tableau de caractères que je remplis en partant du dernier (Répéter {chiffre[num] = nombre % base; nombre /= base; num--; } jusqu'à nombre==0)
    Puis je recopie à partir de là dans le buffer passé en paramètre.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Ouais mais on peut pas utiliser de tableau (ils ont pas encore vu ce que c'etait les autres)


    Donc j'ai fait ca (pas tester), si y a moyen d'optimiser je suis preneur

    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
     
    char Convertir(int nbr)
    {
    if(nbr>9)
        return '0'+nbr;    
    else
        return 'A'+nbr-10;
    }
     
     
    void Puthex(int nbr)
    {
    int ln = log(nbr)/log(16);
    int coef=1;
     
    for(int i=0;i<ln;i++)
        coef*=16;
     
    for(int a=0;a<=ln; a++)
        {
         cout << Convertir(X/coef);
         X = X % coef;
         coef/=16;
        }
    }
     
     
    int main()
    {
    int nbr;
    cin >> nbr;
    cout << Puthex(nbr);
    }

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/02/2014, 14h28
  2. Programme à convertir
    Par Ryadus dans le forum PL/SQL
    Réponses: 5
    Dernier message: 21/10/2008, 18h19
  3. [C++.Net] convertir du binaire en hexadecimal
    Par lowrider dans le forum MFC
    Réponses: 2
    Dernier message: 01/05/2006, 14h53
  4. Convertir un programme Visual c++ vers C++ builder
    Par Skarlix dans le forum C++Builder
    Réponses: 11
    Dernier message: 16/10/2004, 22h51
  5. Convertir une AnsiString en hexadecimal
    Par manathan01 dans le forum C++Builder
    Réponses: 3
    Dernier message: 26/12/2002, 09h27

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