web-dev-qa-db-fra.com

Comment afficher les nombres hexadécimaux en C?

J'ai une liste de nombres 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 je suis proche là-bas. Quelqu'un peut-il aider comme je ne le suis passo bon à printf in C.

Merci.

40
hdn

Essayer:

printf("%04x",a);
  • 0 - Insère le chiffre à gauche avec zeroes (0) au lieu d'espaces, où padding est spécifié.
  • 4 (largeur) - Nombre minimal de caractères .__ à imprimer. Si la valeur À imprimer est inférieure à Ce nombre, le résultat est justifié à droite Dans cette largeur en ajoutant à gauche Le caractère du pavé. Par défaut, ceci est Un espace vide, mais le zéro initial que nous avons utilisé Spécifie un zéro comme caractère de pavé . La valeur n'est pas tronquée même si le résultat est plus grand
  • x - Spécificateur pour hexadécimal entier.

Plus ici

98
codaddict

je l'utilise comme ça:

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

Il suffit de changer le nombre "2" en un nombre quelconque de caractères que vous voulez imprimer;)

5
zeilja

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

printf("%04x",a);
0
loxxy

Vous pouvez utiliser le code d'extrait 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.

0
hmofrad