web-dev-qa-db-ja.com

Cで16進数を表示する方法は?

私は次のような数字のリストを持っています:

0、16、32、48 ...

これらの数値を16進数で出力する必要があります。

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

私は次のような解決策を試しました:

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

しかし、私が得た結果は次のとおりです。

0000、0001、0002、0003、0004 ...

私はそこに近いと思います。 Cのprintfがあまり得意ではないので、誰でも助けてくれます。

ありがとう。

43
user188276

試してください:

printf("%04x",a);
  • 0-パディングが指定されている場合、スペースの代わりにゼロ(0)で数値を左詰めします。
  • 4(幅)-印刷される最小文字数。印刷される値がこの数値よりも短い場合、結果はこの幅内で右詰めされ、左側に埋め込み文字が埋め込まれます。デフォルトではこれは空白ですが、使用した先行ゼロは埋め込み文字としてゼロを指定します。結果が大きくても、値は切り捨てられません。
  • x-16進整数の指定子。

もっと こちら

105
codaddict

私はこれを次のように使用します:

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

数字「2」を印刷したい任意の数の文字に変更するだけです;)

6
zeilja

コードに問題はありません。希望どおりに印刷します。または、これを行うことができます:

printf("%04x",a);
1
loxxy

次のスニペットコードを使用できます。

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

10進数と16進数の両方をゼロの埋め込みで4桁に印刷します。

1
hmofrad