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