2010-09-06 15 views
39

Mam listę numerów, jak poniżej:Jak wyświetlać liczby szesnastkowe w C?

0, 16, 32, 48 ...

muszę produkcji tych liczb w systemie szesnastkowym jako:

0000 , 0010,0020,0030,0040 ...

próbowałem rozwiązanie takie jak:

printf("%.4x",a); // where a is an integer 

ale wynik, że mam to:

0000, 0001, 0002, 0003, 0004 ...

myślę, że jestem blisko tam. Czy ktoś może pomóc, ponieważ nie jestem tak dobrze w printf w C.

Dzięki.

+5

Spróbuj 'printf ("% d:% .4x \ n ", a, a)', myślę, że twoje 'a' nie ma wartości, którą uważasz, że ma. –

+0

tak, masz rację. byłem nieobecny w umyśle. przepraszam za to głupie pytanie ... – root

Odpowiedz

86

Spróbuj:

printf("%04x",a); 
  • 0 - lewa klocki numer z zer (0) zamiast przestrzeniach, gdzie wyściółka jest określona.
  • 4 (szerokość) - Minimalna liczba znaków do wydrukowania. Jeśli wydrukowana wartość jest krótsza niż , wynik zostanie wyrównany do prawej wartości w obrębie tej szerokości przez wypełnienie po lewej stronie ze znakiem pada. Domyślnie jest to puste miejsce, ale wiodące zero, które wykorzystaliśmy, to określa zero jako znak pada. Wartość nie jest obcięta, nawet jeśli wynik jest większy o .
  • x - Specyfikator dla liczby szesnastkowej integer.

Więcej here

+0

to wynik: 0000, 0001, 0002, 0003, 0004 ... czego potrzebuję to: 0000,0010,0020,0030,0040 ... – root

+0

To działa dla mnie. http://www.ideone.com/2VzY1 – codaddict

+0

hmm, jak dziwnie ... Próbowałem, ale zawsze pojawiałem się jako 0000, 0001, 0002, 0003, 0004 (używam Eclipse w Ubuntu, gcc ...) – root

0

Twój kod nie ma problemu. Drukuje tak, jak chcesz. Alternatywnie, można to zrobić:

printf("%04x",a); 
4

go używać tak:

printf("my number is 0x%02X\n",number); 
// output: my number is 0x4A 

Wystarczy zmienić numer "2" do dowolnej liczby znaków, które chcesz wydrukować;)

0

Można użyj następującego kodu:

#include<stdio.h> 
int main(int argc, char *argv[]){ 
    unsigned int i; 
    printf("decimal hexadecimal\n"); 
    for (i = 0; i <= 256; i+=16) 
     printf("%04d  0x%04X\n", i, i); 
    return 0; 
} 

Umożliwia wydrukowanie liczb dziesiętnych i szesnastkowych w 4 miejscach z zerową podkładką ding.

Powiązane problemy