IEEE単精度浮動小数点数を特定のアドレスの32ビットハードウェアレジスタに書き込む必要があります。そのためには、float型の変数を符号なし整数に変換する必要があります。私はこのような整数表現を得ることができます:
float a = 2.39;
unsigned int *target;
printf("a = %f\n",a);
target = &a;
printf("target = %08X\n",*target);
これは次を返します:
a = 2.390000
target = 4018F5C3
すべて良い。ただし、これにより、コンパイラの警告「cast.c:12:警告:互換性のないポインタ型からの割り当て」が発生します。
警告を生成しないこれを行う他の方法はありますか?これは特定のハードウェア用であり、異なるエンディアンなどを処理する必要はありません。また、他のいくつかの質問が示唆する傾向があるため、パフォーマンス上の理由から各文字をループしたくありません。C ++でreinterpret_castを使用できるようですが、私はCを使用しています。