hex en dec en C
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

hex en dec en C



  1. #1
    sdow

    hex en dec en C


    ------

    salut

    est ce quelquen peut m' aider de transformer un int en decimal et placer les valeurs dans un buffer . ex si j'ai 123F comment faire pour transformer en dec en C

    -----

  2. #2
    invite9d3f5cd9

    Re : hex en dec en C

    Je te propose un algorithme qui n'est pas nécessairement optimisé.
    a) on divise la nombre par 10 000 pour connaitre so on 0, 1. 2. ou 3 dizaines de
    milliers. Si on veut le caractère ASCII, on fait un OU avec 0x30

    b) On prend le reste de la division par 10 000 qu'on divise par 1000 et le résultat est le nombre de milliers.

    c) On prend ensuite le reste de la division par 1000 fait en b qu'on divise par 100 pour obtenir le nombre de centaines.

    Et ainsi de suite jusqu'aux unités.

    Espérant le tout à ta satisfaction.

  3. #3
    Seb.26

    Re : hex en dec en C

    Ton int est en hexa ou en decimal ?
    Tu veux quoi comme "buffer" ?
    Une chaine de caractères ?
    Quel est la taille de ton int ? ( 8b ? 16b ? 32b ? )

    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  4. #4
    PA5CAL

    Re : hex en dec en C

    Bonjour
    Citation Envoyé par sdow Voir le message
    si j'ai 123F comment faire pour transformer en dec en C
    J'imagine qu'on part du principe que la valeur à convertir tient sur 16 bits.

    La solution de principe a donc été donnée au-dessus par xouiram.

    Après, on peut optimiser en fonction du type de processeur utilisé, notamment s'il ne dispose pas de la division. Dans ce cas, ça peut donner quelque chose comme ceci :
    Code:
    // Sous-fonction:
    // Conversion d'un seul chiffre décimal
    // En sortie, *p_hval contient le reste non converti
    char conv1digit(unsigned int *p_hval, int div)
    {
        char digit=0x30;   // Initialisation à "0" en ASCII
    
        // Division de hval par div
        // sans utiliser d'opération de division
        while( div < *p_hval ) {
            *p_hval -= div;
            digit++;
        }
    
        return digit;
    }
    
    // Fonction principale:
    // Conversion d'un entier non signé en nombre décimal ASCII
    void hex2dec(unsigned int hval, char dval[6])
    {
        dval[0] = conv1digit( &hval, 10000 );
        dval[1] = conv1digit( &hval, 1000 );
        dval[2] = conv1digit( &hval, 100 );
        dval[3] = conv1digit( &hval, 10 );
        dval[4] = (char)hval;
    
        dval[5] = 0; // caractère nul de fin de chaîne 
    }
    Ça peut être encore amélioré, notamment en supprimant les zéros non significatifs ou en les remplaçant par des espaces, ou en traitant les valeurs signées, selon ce que l'on désire obtenir.
    Dernière modification par PA5CAL ; 06/03/2008 à 10h36.

  5. A voir en vidéo sur Futura
  6. #5
    Seb.26

    Re : hex en dec en C

    Code:
    int hex_value;
    char[6] str_out; // [6] si int=16b signé, [11] si 32b
    sprintf( str_out, "%d", hex_value );
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  7. #6
    Jack
    Modérateur

    Re : hex en dec en C

    Citation Envoyé par sdow Voir le message
    salut

    est ce quelquen peut m' aider de transformer un int en decimal et placer les valeurs dans un buffer . ex si j'ai 123F comment faire pour transformer en dec en C
    Ca veut dire quoi décimal? BCD? Sinon la question n'a pas de sens. Un int est un int, et vaut une certaine valeur, qu'elle soit exprimée en hexa, en binaire ou en hexadécimal.

    Il faudrait un exemple avec la valeur de départ et ce qu'on doit trouver à la sortie.

    A+

  8. #7
    PA5CAL

    Re : hex en dec en C

    Citation Envoyé par Seb.26 Voir le message
    Code:
    int hex_value;
    char[6] str_out; // [6] si int=16b signé, [11] si 32b
    sprintf( str_out, "%d", hex_value );
    Attention : le format "%d" utilise un caractère supplémentaire (un signe "moins" pour les nombres négatifs ou un espace pour les nombres positifs). Il faut donc prévoir un tableau de 7 caractères pour un entier sur 16 bits et un tableau de 12 caractères pour un entier sur 32 bits.

    Ne pas oublier d'inclure le fichier de déclaration stdio.h au source et de lier la librairie standard (qui fait tout le travail).

  9. #8
    PA5CAL

    Re : hex en dec en C

    Bon, sdow, tout ça ce sont des exemples faits sur la base de suppositions.

    Le plus sage serait quand même d'attendre ta réponse aux questions de Seb.26 (post #3) et de Jack (post #6).


Discussions similaires

  1. Message.hex
    Par ePat dans le forum Électronique
    Réponses: 4
    Dernier message: 22/11/2007, 04h27
  2. Que peut on faire après un DEC / Webmaster en france?
    Par invite1cff4ffa dans le forum Orientation après le BAC
    Réponses: 0
    Dernier message: 20/07/2007, 17h13
  3. Téléphone DEC combiné avec un enregistreur mp3
    Par invite5b9359fb dans le forum Électronique
    Réponses: 0
    Dernier message: 24/02/2007, 14h01
  4. AD & Dec
    Par invitef104680e dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 8
    Dernier message: 02/08/2006, 12h32
  5. 7 déc. problèmes envoyer recevoir mails ?
    Par Cornemuse dans le forum Internet - Réseau - Sécurité générale
    Réponses: 3
    Dernier message: 13/12/2004, 06h35
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...