2011-07-06 4 views
1

4バイト(またはint32値、ビッグエンディアン)で表されるビットパターンからSystem.Single値(= IEEE 754「単精度」32ビット浮動小数点数)を構築する必要があります。.NETでビットパターンから浮動小数点を構築する方法は?

.NET/F#でどうすればいいですか?

+0

より良いタイトルは「.NETでビットパターンから浮動小数点を構築する方法」でしょうか? – Sebastian

答えて

2

あなたはバイト配列ににから行くためにBitConverterクラス

byte[] data = new byte[4]; 
float f = BitConverter.ToSingle(data, 0); 

を使用してシングルにバイト配列を変えることができます:

int i = 1234; 
byte[] data = BitConverter.GetBytes(i); 

(私のコードは、C#であるが、私

+1

ありがとう、マーク! BitConverter.ToSingleはリトルエンディアンなので、実際のF#コードは次のようになります。 float_of_int32_be(x:int32):float = float(System.BitConverter.ToSingle([k | for 0..3 do yield byte (x >>>(8 * k))|]、0)) – Sebastian

2

あなたはBuffer.BlockCopyを使用することができます。

Assert.AreEqual(sizeof(float), sizeof(int)); 
int[] ints = ... 
float[] result = new float[ints.Length]; 
Buffer.BlockCopy(ints, 0, result, 0, result.Length * sizeof(float)); 

result配列はints配列内のビットパターンで表現されているフロートが含まれています。 ints配列内の各要素は、1つのfloatのビットパターンを表します。

+0

これは何を達成するでしょうか? – leppie

+2

@leppie:OPが尋ねることとまったく同じです...もっと正確に質問してください。 –

+0

興味深いことに、私はあなたのようにそれを使うことはできませんでした:) – leppie

関連する問題