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
.
%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.
%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.
Votre chaîne est plus large que votre largeur de format de 2. Il n'y a donc pas de remplissage à faire.