Ich mag würde ein unsigned int wie drucken: 0x000000
weil ich:C - printf unsigned int
# define OFFSET (u32) 0x21FE014
typedef unsigned int u32;
Als ich printf wie folgt verwenden:
printf("Offset: %zu\n", OFFSET);
Er kehrte mir: 35643412
Versuchen Sie '"% # 08x "'. – user3386109
Keine homebrew festen Weite Typen verwenden! Verwenden Sie 'stdint.h' und' limits.h'. Letzteres enthält Makros für die stdlib-Formatzeichenfolgen. 'int' hat nicht garantiert 32 Bit. – Olaf
Und wenn Sie Typen wie 'uint32_t' aus' 'verwenden, sollten Sie' PRIX32' aus '' verwenden, um Großbuchstaben anzugeben (in voller Größe, printf ("Offset: 0x% .8" PRIX32 "\ n ", OFFSET)'). Obwohl '#' '0x' oder' 0X' vor der Hexadezimalausgabe ausgibt, ist der Fall von 'x' gleich dem Fall der Hexadezimalziffern. Es sieht so aus, als ob Sie die Kleinbuchstaben "x" und Großbuchstaben bevorzugen (ich auch), also funktionieren die Standardformate nicht nach Ihren/meinen Anforderungen. –