2016-03-19 1 views
1

Ich versuche printf unsigned kurz in hex, z. 0XFFFF. Das Problem ist, dass ich ein Kleinbuchstabe x nicht X will. Ich habe keine Idee, wie man das macht.printf kurz in Hex mit Großbuchstaben in C

fprintf(c,"%#06X,\n\t", pixel[i])); 
+0

und die C++ Tag nur rutschte in ... – Olaf

+0

'% X' ist der falsche Typbezeichner für' unsigned short' und 'pixel [i] ist auch der falsche Typ. – Olaf

+2

Pixel [i] ist ein vorzeichenloses kurzes Array. –

Antwort

5

Ändern Sie den% X Spezifizierer auf% x und Sie sollten Kleinbuchstaben erhalten:

fprintf(c, "%#06x\n", pixel[i]); 

Gibt die Anzahl als 0xffff. Wenn Pixel ein Array von unsigned Shorts ist und Sie das Format der Daten übereinstimmen, können Sie tun:

fprintf(c, "%#06hx\n", pixel[i]); 

Wenn Sie wirklich 0xFFFF wollen, dann ist das trivial:

fprintf(c, "0x%04hX\n", pixel[i]); 
+0

Ich vermute, OP will nur den 'x' lowr Fall, wie er in der Frage angibt. Beachten Sie, dass das Argument "unsigned int" sein muss, um implementierungsdefiniertes Verhalten zu vermeiden, das eine Umwandlung erfordert. – Olaf

+1

Es gibt keine Implementierung definiert Verhalten betrifft hier mit oder ohne eine '(unsigned)' Besetzung. '" 0x% 04hX "' ist sicherlich das, wonach OP sucht. – chux