2016-03-19 12 views
1

私は16fでunsigned shortをprintfしようとしています。 0XFFFF。問題は、Xではなく小文字のxが欲しいということです。これをどうやって行うのか分かりません。printfはCの大文字で16進数で短くなります

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

とC++のタグだけ〜に入りました... – Olaf

+0

'%X'は' unsigned short'の間違った型指定子であり、 'pixel [i]も間違った型です。 – Olaf

+2

pixel [i]は符号なしのshort配列です。 –

答えて

5

変更%のX%のX指定子、あなたは下ケースを取得する必要があります:0xffffとして

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

出力数。ピクセルは、符号なしshortの配列であり、あなたはフォーマットがデータを一致させたい場合は、あなたが行うことができます:

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

をあなたが本当に0xFFFFをしたい場合は、それは些細です:

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

私は質問で彼が述べているように、OPがちょうど 'x'の低額のケースを望んでいると思う。キャストを必要とする実装定義の振る舞いを避けるためには、引数は 'unsigned int'でなければならないことに注意してください。 – Olaf

+1

'(符号なし)'キャストの有無にかかわらず実装定義の動作上の問題はありません。 '" 0x%04hX "'はOPが探しているものです。 – chux

関連する問題