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 :

Conversion entier hexadecimal


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 46
    Par défaut Conversion entier hexadecimal
    bon voila le principe de mon programme c'est convertir un entier en hexadecimal.
    Alors le souci avec l'hexadecimal c'est qu'il contient des chiffres mais aussi des lettres,alors mon idee cetai de diviser l'entier par 16 ,de convertir le chiffre en character et si c'etai un 10 il va etre remplace par un 'A',un 11 par un 'B' et ainsi de suite,tou ca dans une boucle et chaque valeur trouvé allai etre stoké dans une case du tableau .et puis au final afficher le tableau a l'envers pour avoir la suite Hexadeciamal.
    mais bizarement il m'affiche "Lvalue required"
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #include<stdlib.h>
     
     
    void main()
    {
    int r,q,n,i,p;
    char t[50],buffer[1];
     
    printf("entrez un entier");
    scanf("%d",&n);
     
    do
    {
     
    r=n%16;
     
    if ((itoa(r,buffer,10))='10')
    buffer='A' ;
    else if ((itoa(r,buffer,10))=='11')
    buffer='B';
    else if ((itoa(r,buffer,10))=='12')
    buffer='C';
    else if ((itoa(r,buffer,10))=='13')
    buffer='D';
    else if ((itoa(r,buffer,10))=='14')
    buffer='E';
    else if ((itoa(r,buffer,10))=='15')
    buffer='F';
    else
    buffer=buffer;
     
     
    t[i]=buffer[0];
    i++;
    r=atoi(buffer);
    q=n/16;
    n=q;
    r=0;
    }
    while(q!=0);
     
     
     
    for(p=i;p>0;p--)
    printf("%d",t[p]);
     
    getch();
    }
    Merci de votre aide les amis.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((itoa(r,buffer,10))='10')
    Ca devrait être un "==" et pas "=", si on regarde aussi les autres lignes... Ensuite pour comparer des chaines de caractères on utilise strcmp ! et pas "==". Et utilise "itoa", ce nest pas dans la norme ansi. Autant faire un "sprintf"... Enfin vu ton programme , ca doit pas te dire grand chose...Et ton buffer n'est pas assez grand en plus...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char t[50],buffer[1];
    buffer='A' ;
    Tu affectes un caractère à une chaine de caractère, ca ne peut pas fonctionner.

  3. #3
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Il y a beaucoup d'erreurs signalée par le compilo:
    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
    C:\data\sources\C\dummy\main.c 8 warning: return type of 'main' is not `int' 
    C:\data\sources\C\dummy\main.c 20 warning: multi-character character constant 
    C:\data\sources\C\dummy\main.c  In function `main': 
    C:\data\sources\C\dummy\main.c 20 error: invalid lvalue in assignment 
    C:\data\sources\C\dummy\main.c 21 error: incompatible types in assignment 
    C:\data\sources\C\dummy\main.c 22 warning: multi-character character constant 
    C:\data\sources\C\dummy\main.c 22 warning: comparison between pointer and integer 
    C:\data\sources\C\dummy\main.c 23 error: incompatible types in assignment 
    C:\data\sources\C\dummy\main.c 24 warning: multi-character character constant 
    C:\data\sources\C\dummy\main.c 24 warning: comparison between pointer and integer 
    C:\data\sources\C\dummy\main.c 25 error: incompatible types in assignment 
    C:\data\sources\C\dummy\main.c 26 warning: multi-character character constant 
    C:\data\sources\C\dummy\main.c 26 warning: comparison between pointer and integer 
    C:\data\sources\C\dummy\main.c 27 error: incompatible types in assignment 
    C:\data\sources\C\dummy\main.c 28 warning: multi-character character constant 
    C:\data\sources\C\dummy\main.c 28 warning: comparison between pointer and integer 
    C:\data\sources\C\dummy\main.c 29 error: incompatible types in assignment 
    C:\data\sources\C\dummy\main.c 30 warning: multi-character character constant 
    C:\data\sources\C\dummy\main.c 30 warning: comparison between pointer and integer 
    C:\data\sources\C\dummy\main.c 31 error: incompatible types in assignment 
    C:\data\sources\C\dummy\main.c 33 error: incompatible types in assignment 
      === Build finished: 8 errors, 12 warnings ===
    En particulier:
    - un main est toujours de type int, pas void
    - '10' n'est pas légal, on met toujours un caractère unique entre simples cotes

    Si tu veux une méthode itérative, essaie quelquechose du genre:

    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
    42
    43
    44
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
     
    void uint2hex(unsigned int value, char* hexstring)
    {
        unsigned int reste;
        hexstring[0] = 0;
        do
        {
            reste = value % 16;
            value = value / 16;
            memmove(hexstring + 1,hexstring, strlen(hexstring) + 1);
            if(reste < 10)
            {
                hexstring[0] = '0' + reste;
            }
            else
            {
                hexstring[0] = 'a' - 10 + reste;
            }
        }while(value);
     
    }
     
    int main()
    {
        unsigned int value;
        char hexstring[50];
     
        printf("Entrez un entier : ");
        if(scanf("%u",&value))
        {
            uint2hex(value,hexstring);
            printf("%s\nhit a key...",hexstring);
        }
        else
        {
            printf("Not an integer!\nhit a key...");
        }
     
        getch();
        return 0;
    }
    Sinon, il y a plus simple, mais ce n'est peut être pas ton but:

    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
    #include<stdio.h>
    #include<conio.h>
     
    int main()
    {
        unsigned int value;
     
        printf("Entrez un entier : ");
        if(scanf("%u",&value))
        {
            printf("%x\nhit a key...",value);
        }
        else
        {
            printf("Not an integer!\nhit a key...");
        }
     
        getch();
        return 0;
    }
    A+

    Pfeuh

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Ca ne te convient pas ?

Discussions similaires

  1. Conversion entier en chaine
    Par clairette dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/05/2006, 18h33
  2. [SQL2005] Conversion entier en ntext
    Par NicoNGRI dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/01/2006, 08h58
  3. [CONVERSION] String -> HEXADECIMAL ...
    Par tripop dans le forum Langage
    Réponses: 9
    Dernier message: 13/01/2005, 10h42
  4. [debutant][hexadecimal]Conversion entier hexadecimal
    Par Mobaladje dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 14/05/2004, 08h50
  5. Conversion binaire -> hexadecimal
    Par barthelv dans le forum C
    Réponses: 2
    Dernier message: 06/08/2003, 11h40

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