web-dev-qa-db-fra.com

Spécificateur de format% 02x

J'ai un programme simple:

#include <stdio.h>
int main()
{
        long i = 16843009;
        printf ("%02x \n" ,i);
}

J'utilise %02x spécificateur de format pour obtenir une sortie de 2 caractères, Cependant, la sortie que j'obtiens est:

1010101 

alors que je m'attends à ce que ce soit: 01010101.

28
user2717225

%02x signifie imprimer au moins 2 chiffres, ajoutez-le 0 s'il y en a moins. Dans votre cas, c'est 7 chiffres, vous n'avez donc pas besoin de 0 devant.

Également, %x est pour int, mais vous avez un long. Essayez %08lx au lieu.

43
aragaer

%x est un spécificateur de format qui formate et affiche la valeur hexadécimale. Si vous fournissez une valeur int ou longue, il la convertira en valeur hexadécimale.

%02x signifie que si la valeur fournie est inférieure à deux chiffres, alors 0 sera ajouté.

Vous avez fourni une valeur 16843009 et il a été converti en 1010101 dont une valeur hexadécimale.

3
PulkitRajput

Votre chaîne est plus large que votre largeur de format de 2. Il n'y a donc pas de remplissage à faire.

2
PP.