2013-08-02 22 views
2

我想读取包含以4字节IEEE浮点数编码的数字的二进制文件。我正在使用.NET BinaryReader这样做,但我不确定如何正确读取数据。我确信ReadSingle()方法不会给我我正在寻找的价值。在.NET中读取4字节IEEE浮点数

有谁知道如何在.NET中做到这一点?

+1

鉴于=,预计=,格雷格什么了? =? –

+1

'ReadSingle'使用IEEE浮点数。如果你没有得到正确的结果,你可能想要确保你的输入数据格式正确,并仔细检查你的输入数据是小端还是大端。也许翻转字节将帮助您获得正确的值。 –

+1

IEEE-754是通用的。你当然会*使用BinaryReader.ReadSingle()从二进制文件读取一个浮点数。获取文件偏移量错误*非常*常见的事故,你会阅读垃圾。 –

回答

5

如果BitConverter.ToSingle方法不为你工作,你可能需要考虑 Array.Reverse更改您的字节顺序。

你真的没有你的问题提供任何代码(这是强烈建议), 但我猜它像:

byte[] myData = new byte[4]; 
myBinReader.Read(myData, 0, 4); // Get 4-bytes from the stream. 

Array.Reverse(myData); // Deal with Endian issue? 
Single myvalue = BitConverter.ToSingle(myData, 4); 
+0

感谢大家的帮助。我的代码基本上只是bR.ReadSingle(),我也试过bR.ReadBytes(4),然后使用BitConverter。看起来这是最好的选择。我被数据的幅度(微小)所抛弃,现在我认为它正在被正确读取,我正在读取数据后缩放数据,以便我可以按照我想要的方式(这是我将最终获得的地震数据输出为图像)。再次感谢。 – Greg

0

遍历您的输入(或阅读数据流),并使用BitConverter的

float value = BitConverter.ToSingle(bytes, index);