C#如何读取二进制文件(float32)

原创 2016年08月28日 21:52:45

今天碰到一个问题,手上有一个二进制文件,里面的数据是由一个一个的float32类型数值组成,现在需要在C#中读取这个文件中的所有数据。

首先找到C#中用于读取二进制文件的有BinaryReade这个类,那么关于这个类的描述及其方法参见MSDN:

https://msdn.microsoft.com/en-us/library/system.io.binaryreader_methods(v=vs.110).aspx

我们可以看到,这个类中有很多不同的ReadXXX函数,用于读取不同类型的数据,然而并没有float32这种类型的读取方法。

后来我想到的一个解决方法是使用ReadBytes(Int32)这个方法,方法描述如下:

Reads the specified number of bytes from the current stream into a byte array and advances the current position by that number of bytes.

也就是说我们可以自己设定一次读取多少个字节的数据。

那么1个float32类型的数据其实也就是由32位二进制码组成,也就是4个bytes。

所以我们可以通过ReadBytes(4)来实现一次读取4个bytes,这4个bytes也就组成了一个float32值。

那么如何将这4个bytes转换成一个float32值呢?网上找到的方法见链接:

http://stackoverflow.com/questions/2619664/c-convert-byte-array-into-a-float

所以整体而言可以这样来实现整个过程:

BinaryReader br = new BinaryReader(new FileStream("D:\\1.binary", FileMode.Open));    
            Byte[] byteForFloat;    
            for(byteForFloat=br.ReadBytes(4); byteForFloat.Length==4;)    
            {    
                float myFloat = System.BitConverter.ToSingle(byteForFloat, 0);    
                byteForFloat= br.ReadBytes(4);   }



更新:

今天突然发现BinaryReader里面是有读取Float32的方法的

ReadSingle()

Reads a 4-byte floating point value from the current stream and advances the current position of the stream by four bytes.







一种C#读写二进制文件的通用方法

本文转载连接: http://www.cnblogs.com/TianFang/archive/2012/10/06/2712987.html 一种C#读写二进制文件的通用方法 ...
  • newbie_xymt
  • newbie_xymt
  • 2017年10月23日 18:10
  • 319

C#_FileStream读取文本文件和二进制文件

using System; using System.Collections; using System.Collections.Generic; using System.IO; using Sys...
  • c201038795050
  • c201038795050
  • 2015年12月20日 13:05
  • 7158

C#读取、保存二进制数据文件

C#读取、保存二进制数据文件
  • python
  • python
  • 2016年03月09日 09:43
  • 2933

C#使用BinaryReader类读取二进制文件

C#使用BinaryReader类读取二进制文件 BinaryReader类用来读取二进制数据,其读取数据的方法很多,常用方法如下: Close():关闭BinaryRea...
  • ycguhang
  • ycguhang
  • 2013年01月09日 23:23
  • 25444

C# 向二进制文件进行读写操作

该例子使用 BinaryStream 和 BinaryWriter 对二进制文件进行读写操作先上代码再根据我理解的所分享给各位博友。完整代码如下:引入命名空间:using System.IO;完整代码...
  • Andrew_wx
  • Andrew_wx
  • 2011年07月24日 19:41
  • 13998

C# 二进制读写与序列化和反序列化

可参考雨松大神:http://www.xuanyusong.com/archives/1919 http://www.xuanyusong.com/archives/1901文章将实现数据存储为二进...
  • Jason_520
  • Jason_520
  • 2017年01月15日 00:16
  • 2309

C#读写二进制文件的例子

  • 2009年09月07日 19:43
  • 29KB
  • 下载

一种C#读写二进制文件的通用方法<转>

在日常的工作中,我们经常需要进行一些二进制文件或协议的读写操作,用C#解析二进制文件常常是一件比较麻烦且容易出错的工作,本文介绍了一种在C#中实现快速读写二进制文件通用的方法。 以一个解析Mp3 I...
  • ycguhang
  • ycguhang
  • 2013年01月09日 23:31
  • 7393

C# 向数据中存储和读取二进制文件!!

 //1。将path 所制定的文件转成byte[] 类型数据 byte[] b = File.ReadAllBytes(path);   //2。存到数据库的方法就不说了 注意的是 sql serve...
  • xxj_jing
  • xxj_jing
  • 2007年10月25日 12:05
  • 1647

c# 读文件成二进制流 把二进制流下载成文件

1. 读文件成二进制流保存到byte数组bufferFile   string myComputerFilePath = "E:\\noticeFujian\\20150506\\6356652772...
  • xuanwuziyou
  • xuanwuziyou
  • 2015年05月15日 16:16
  • 2020
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#如何读取二进制文件(float32)
举报原因:
原因补充:

(最多只允许输入30个字)