: Ben çünkü 0x000000
:C - printf işaretsiz int ben işaretsiz int gibi yazdırmak istiyoruz
# define OFFSET (u32) 0x21FE014
typedef unsigned int u32;
böyle printf kullandığınızda: 35643412
printf("Offset: %zu\n", OFFSET);
Beni döndü
: Ben çünkü 0x000000
:C - printf işaretsiz int ben işaretsiz int gibi yazdırmak istiyoruz
# define OFFSET (u32) 0x21FE014
typedef unsigned int u32;
böyle printf kullandığınızda: 35643412
printf("Offset: %zu\n", OFFSET);
Beni döndü
%x
onaltılı çıktı için printf
biçimidir:
baskı tabanında işaretsiz tamsayı olarak gelen size_t
argüman anlamına 10.
Ne istiyorsun öneki olmadan onaltılık işaretsiz bir tamsayı yazdırmak için %x
olduğu; 0x
önekini gerçekten istiyorsanız, %#x
kullanın.
"% # 08x" yi deneyin. – user3386109
Homebrew sabit genişlik türleri kullanmayın! Stdint.h' ve 'limit.h' kullanın. İkincisi stdlib biçimindeki dizeler için makro içerir. 'ın' 32 bit olması garanti edilmez. – Olaf
Ve 'dan 'uint32_t' türlerini kullanırsanız, büyük harf altı (tam olarak, printf (" Offset: 0x% .8 "PRIX32" \) belirtmek için '' dan 'PRIX32' kullanılmalıdır. n ", OFFSET)"). Onaltılık çıkıştan önce # '' 0x' veya '0X' basmakla birlikte,' x' 'nin durumu, onaltılık hanelerin durumuyla aynıdır. Küçük harf 'x' ve büyük harf hex basamaklarını tercih edersiniz (ben de yaparım), bu yüzden standart formatlar sizin gereksinimlerinize göre çalışmaz. –