2

重複の可能性:
Cを使用してintをバイナリ表現で出力します

短いintのバイト表現を出力し、Cでdoubleを出力するにはどうすればよいですか。

関数display_shortIntがあるとしましょう。どのようにすれば、short intのバイト表現を出力できますか?私はCに不慣れです、ありがとう!

4

3 に答える 3

7

これはどうですか?

void print_bytes(void *p, size_t len)
{
    size_t i;
    printf("(");
    for (i = 0; i < len; ++i)
        printf("%02X", ((unsigned char*)p)[i]);
    printf(")");
}

void print_short(short x)
{
    print_bytes(&x, sizeof(x));
}

void print_double(double x)
{
    print_bytes(&x, sizeof(x));
}
//etc.

これにより、値を形成するバイトが16進数で1バイトあたり2文字で出力されます。

たとえば、リトルエンディアンのマシンでは、print_short(42)を出力します(2A00)。ビッグエンディアンのマシンでは、になります(002A)

于 2012-09-11T22:17:13.423 に答える
2

メモリ内でどのように構成されているかを確認したい場合 (アーキテクチャに依存):

short val = 0x1234;
printf( "%02x%02x", ((char*)&val)[0], ((char*)&val)[1] );

それがどのように書かれているかを見たいだけの場合(ビッグエンディアン):

printf( "%04x", val );
于 2012-09-11T22:48:35.073 に答える
2

それを印刷する直接的な方法 (つまり、printf や別の標準ライブラリ関数を使用する方法) はありません。独自の関数を作成する必要があります。

void printbits(unsigned int v) {
   for (; v; v >>= 1) 
      putchar('0' + (v & 1));
}
于 2012-09-11T22:14:24.820 に答える