0

floatをバイナリ文字列に変換しようとしています。フロートをいわゆる「バイナリフロート」に変換するチュートリアルがたくさんあることに気づきました。たとえば、数値8.5は2進数のfloat1000.1です。

これは、modf関数を使用して仮数を除算し、整数部分と小数部分を2つの別個の整数にすることで検出されます。次に、ビット操作を使用するか、2による除算(10進整数部分の場合)を使用して、これらの整数の両方の2進表現を出力します。

1000.1私が欲しいものではありません。実際のバイナリ文字列表現が必要です。

01000001 00001000 00000000 00000000

modf関数を使用すると、floatが2つの整数に変換できることを保証できません。

私は現在、整数をバイナリ文字列に変換する関数を持っています。フロートにはこんなものがあるのか​​なぁと思いました。もしそうなら、私を正しい方向に向けてください。ありがとう。

4

1 に答える 1

3

floatのアドレスを取得し、それをint*(または同一のその他の適切な整数型sizeof)にキャストしてから、既存の関数を使用します。

// assert(sizeof(float) == sizeof(int))

float f = 8.5;
convert_int_to_binary_string(*((int*)&f));
于 2012-10-12T23:33:35.327 に答える