2010-09-06 7 views
39

Ich habe eine Liste von Zahlen wie folgt:Wie werden hexadezimale Zahlen in C angezeigt?

0, 16, 32, 48 ...

ich diese Zahlen in Hexadezimal zur Ausgabe benötigen:

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

ich habe versucht, Lösung wie:

aber das Ergebnis, das ich habe ist:

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

Ich glaube, ich bin dort in der Nähe. Kann jemand helfen, wie ich nicht bin so gut bei printf in C.

Danke.

+5

Versuchen Sie 'printf ("% d:% .4x \ n ", a, a)', Ich denke, dass Ihr 'a' nicht den Wert hat, den Sie denken, dass es hat. –

+0

ja, du hast Recht. Ich war geistesabwesend. sorry für diese dumme Frage ... – root

Antwort

86

Versuchen:

printf("%04x",a); 
  • 0 - Links Pads die Zahl mit Nullen (0) anstelle von Leerzeichen, wo padding angegeben ist.
  • 4 (Breite) - Mindestanzahl von Zeichen, die gedruckt werden sollen. Wenn der zu druckende Wert kleiner als diese Zahl ist, wird das Ergebnis rechtsbündig innerhalb dieser Breite durch Auffüllen auf der linken mit dem Pad-Zeichen. Standardmäßig ist dies ein Leerzeichen, aber die führende Null gibt eine Null als Pad-Zeichen an. Der Wert wird nicht abgeschnitten, auch wenn das Ergebnis größer ist.
  • x - Spezifizierer für hexadezimale Integer.

Mehr here

+0

es in Ergebnissen: 0000, 0001, 0002, 0003, 0004 ..., was ich brauche ist: 0000,0010,0020,0030,0040 ... – root

+0

Es funktioniert für mich. http://www.ideone.com/2VzY1 – codaddict

+0

hmm, wie seltsam ... Ich habe versucht, es aber immer als 0000 angezeigt, 0001, 0002, 0003, 0004 (I Eclipse in Ubuntu, gcc ...) – root

0

Ihr Code hat kein Problem. Es druckt wie Sie wollen. Alternativ können Sie dies tun:

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

Ich benutze es wie folgt aus:

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

gerade Zahl „2“ Sie wollen eine beliebige Anzahl von Zeichen ändern drucken;)

0

können Sie verwenden Sie den folgenden snippet-Code:

#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; 
} 

Er druckt sowohl dezimale und hexadezimale Zahlen in 4 Plätzen mit Null-Pad ding.

Verwandte Themen