39 votes

Comment convertir un entier en une chaîne hexadécimale en C ?

Comment convertir un entier en une chaîne hexadécimale en C ?

Exemple : L'entier 50 serait converti en la chaîne hexadécimale "32" ou "0x32".

22voto

Pithikos Points 1227

Le code suivant prend un entier et en fait une chaîne au format hexadécimal :

int  num = 32424;
char hex[5];

sprintf(hex, "%x", num);
puts(hex);

donne

7ea8

19voto

Jerry Coffin Points 237758

Habituellement avec printf (ou l'un de ses cousins) en utilisant le spécificateur de format %x.

13voto

dlb Points 139

Intéressant que ces réponses utilisent printf comme s'il s'agissait d'une donnée. printf convertit l'entier en une valeur de chaîne hexadécimale.

//*************************************************************
// void prntnum(unsigned long n, int base, char sign, char *outbuf)
// unsigned long num = number to be printed
// int base        = number base for conversion;  decimal=10,hex=16
// char sign       = signed or unsigned output
// char *outbuf   = buffer to hold the output number
//*************************************************************

void prntnum(unsigned long n, int base, char sign, char *outbuf)
{

    int i = 12;
    int j = 0;

    do{
        outbuf[i] = "0123456789ABCDEF"[num % base];
        i--;
        n = num/base;
    }while( num > 0);

    if(sign != ' '){
        outbuf[0] = sign;
        ++j;
    }

    while( ++i < 13){
       outbuf[j++] = outbuf[i];
    }

    outbuf[j] = 0;

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X