2

仮定する、float a = 12.5;

その 16 進表現が であることは知っていますが、プログラム0×41480000から 16 進表現を出力するにはどうすればよいですか?float

4

3 に答える 3

2

float を整数として扱うには、ポインターで型のパニングを使用します。

float a = 12.5;
long *aint = (long *)&a;
printf("0x%lx\n", *aint);

変数を追加するのではなく、キャストだけで行うこともできます。

printf("0x%lx\n", *(long *)&a);
于 2013-07-04T04:02:44.230 に答える
1

C99以降、%a基本的にそれを行う指定子があります。仮数を 16 進数と指数で表したものです。ここでの唯一の障害は、double代わりにfor をfloat実行することですが、それほど気にする必要はありません。

于 2013-07-04T07:58:03.033 に答える
0

C でこれを行う合理的な方法は、共用体を使用することです。C 1999 以降では、次の式でこれを行うことができます。

(union { float f; uint32_t u; }) { a } .u

完全なデモンストレーション プログラムを以下に示します。これfloatには、最新の C 実装で一般的な交換形式の IEEE-754 32 ビット バイナリが必要です。

#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>


int main(void)
{
    float a = 12.5;
    printf("%" PRIx32 "\n",
        (union { float f; uint32_t u; }) { a } .u);
    return 0;
}
于 2013-07-05T01:37:22.790 に答える