Printf et les valeurs hexadécimales
J'ai une valeur de type __be16 (2 octets). Dans l'hexagone, la valeur est représentée comme 0x0800 ou 2048 en décimal. (16^2 * 8)
Donc, quand j'ai printf cela; je fais ceci:
printf("%04X", value); //__be16 value;
//Print a hex value of at least 4 characters, no padding.
de sortie:
0008
printf("%i", value); //Print an integer.
de sortie:
8
Je devrais être en train de
0800 et 2048 respectivement, ce que je fais mal?
OriginalL'auteur mamidon | 2009-11-20
Vous devez vous connecter pour publier un commentaire.
Ma conjecture est que
value
est 8. 🙂Êtes-vous un petit-boutiste de la machine, tels que les x86? Je vais deviner que par
be16
tu veux dire que la valeur est en big endian et vous devez échanger les octets.Ah, les bnt(valeur) a fait le tour. Je devine que ce n'était pas un problème pour l'impression de l'adresse MAC (ethernet en-tête) parce que je n'ai l'impression de chaque MAC 1 short (2 octets), à un moment, et donc d'éviter l'endianness en tout?
Deviner! Et moi aussi, je sens que je suis en train de développer paranormal capacités de lecture.
OriginalL'auteur asveikau