54 votes

Comment afficher des nombres hexadécimaux en C ?

J'ai une liste de numéros comme ci-dessous :

0, 16, 32, 48 ...

J'ai besoin de sortir ces nombres en hexadécimal comme :

0000,0010,0020,0030,0040 ...

J'ai essayé des solutions telles que :

printf("%.4x",a); // where a is an integer

mais le résultat que j'ai obtenu est :

0000, 0001, 0002, 0003, 0004 ...

Je pense que j'en suis proche. Quelqu'un peut-il m'aider car je ne suis pas Je ne suis pas très doué pour printf en C.

Gracias.

123voto

codaddict Points 154968

Essayez :

printf("%04x",a);
  • 0 - Tampon gauche du nombre avec zéros (0) à la place des espaces, lorsque le le remplissage est spécifié.
  • 4 (largeur) - Nombre minimum de caractères à imprimer. Si la valeur à imprimer est plus courte que ce nombre, le résultat est justifié à droite dans cette largeur en remplissant à gauche avec le caractère de remplissage. Par défaut, il s'agit un espace vide, mais le zéro de tête que nous avons utilisé spécifie un zéro comme caractère de remplissage. La valeur n'est pas tronquée même si le résultat est plus grand.
  • x - Spécification pour l'hexadécimal entier.

Plus de aquí

9voto

zeilja Points 11

Je l'utilise comme ça :

printf("my number is 0x%02X\n",number);
// output: my number is 0x4A

Il suffit de remplacer le chiffre "2" par le nombre de caractères que vous souhaitez imprimer ;)

1voto

loxxy Points 8479

Votre code n'a aucun problème. Il s'imprime comme vous le souhaitez. Alternativement, vous pouvez faire ceci :

printf("%04x",a);

1voto

hmofrad Points 871

Vous pouvez utiliser l'extrait de code suivant :

#include<stdio.h>
int main(int argc, char *argv[]){
    unsigned int i;
    printf("decimal  hexadecimal\n");
    for (i = 0; i <= 256; i+=16)
        printf("%04d     0x%04X\n", i, i);
    return 0;
}

Il imprime les nombres décimaux et hexadécimaux à 4 endroits, sans remplissage.

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