数据-C#读取特定格式的二进制文件

问题描述

C#读取特定格式的二进制文件

在学习的时候遇到了一点麻烦,读取一个二进制文件,这个二进制文件包含了很多相同结构的数据块,每个数据块以FFFF开头,以FFEE结尾,每个数据块长度为1024bytes。但是其中偶尔会出现错误数据,也就是数据块不完整,只有FFFF开头,没有FFEE结尾,这种数据块就不能用。
如果读取数据,就必须去验证。请问各位如何验证?
我本来想用BinaryReader读取,然后验证,但是BinaryReader读了数据就往前移动,就算验证成功了也得不到数据。请各位大神帮个忙,指点下,最好说详细点儿,初学者。十分感谢!!!
此外如何验证读完整个文件了?BinaryReader没有EndOfStream。只能用try...catch...吗?
PS:文件一开头不是FFFF开头,有一节无用的数据。十分感谢~

解决方案

C#读取二进制文件的机制(转)
C++与c#读取二进制文件对比
C#读取二进制文件

解决方案二:

验证头尾和长度就好了啊

解决方案三:

每个数据块以FFFF开头,以FFEE结尾,每个数据块长度为1024bytes
那就先查找FFFF,找到后开始读取1024bytes到byte[] buff = new byte[1024];中,
读取的过程中还需要判断是不是FFFF,是的话就把buff中的数据空重新开始读取,
并且判断是不是FFEE,如果是就判断读取到buff的长度够不够1024,不够就丢弃,重新找FFFF;
如果不是就继续读取,同时要判断buff是否已经写满,写满后还不是FFEE就丢弃,重新找FFFF;

解决方案四:

因为BinaryReader()读取的位置不能前移,那么当我验证了FFFF后40位字节不是0000时,BinaryReader()也不能返回到FFFF后面的那个字节了。

我目前使用的方法是读取42个bytes,然后验证,如果不是FFFF开头0000结尾,那么整个数组就往后移动一个字节。不知道这个方法笨不笨。

PS:这里用0000替代FFEE,0000才是结尾,之前记错了。

时间: 2024-08-01 13:15:34

数据-C#读取特定格式的二进制文件的相关文章

c++ 问题 怎么文本文件中读取特定行的数据进行排序?

问题描述 c++ 问题 怎么文本文件中读取特定行的数据进行排序? 例如我的文件保存格式是这样的: 怎么得到科研时间 和排名的数据 解决方案 行的结束符是回车换行,即 0x0D 0x0A 想读取一行,最简单.原始的方法就是一个字符一个字符读,然后判断是否是回车换行?如果是,则一行结束:否则继续读. 先将数据读取到结构体中,然后想怎么处理就与文件没有关系了.处理完后,再写入文件. 解决方案二: 需读:读而不用.一行一行读下去,读到你要的,进行处理. 解决方案三: 这个地方举个例子,将所有的关于的信息

声卡数据 读取-通过代码实现读取苹果mac电脑声卡数据,生成音频格式文件

问题描述 通过代码实现读取苹果mac电脑声卡数据,生成音频格式文件 要求:Object C,C语言,C++,java都行,但是要能在苹果电脑上运行,有代码思路也可以交流!

如何在客户端上读取大数据文件(NetCDF格式)

问题描述 如何在客户端上读取大数据文件(NetCDF格式) 小妹这里遇到一个技术问题,请各位大牛不吝赐教啊. 我们现在在做一个小网站,主要实现在客户端上传NETCDF文件,然后再服务器端读入,并对读入数据进行一系列运算后,向客户端返回运算结果,并在客户端显示出来. (NETCDF文件是一种科学数据的文件格式化,需要通过NetCDF 接口函数库来读取文件) 现在我们遇到一个问题,由于NETCDF文件数据量太大(几百兆左右),在服务器端读取NETCDF文件花费的时间太长,影响了页面的操作效率,所以我

fortran数值计算方面 关于二进制数据读取 总是提示 某个二进制文件 的 错误

问题描述 fortran数值计算方面 关于二进制数据读取 总是提示 某个二进制文件 的 错误 错误提示:"Open error for xxx unit,status,file= 22 602 DIRECTORYxxx.dat" 背景: 1.脚本编译链接成功生成可执行程序 .exe: 2.二进制文件('xxx.dat')单独读取没有问题: 3.编译环境 Compad Visual Fortran ...Version 6.5 4.采用其他编译器 g95.gfortran.gcc均能编译

java遍历服务器里的所有excel文件读取特定单元格的值,循环读取文件的代码怎么写

问题描述 java遍历服务器里的所有excel文件读取特定单元格的值,循环读取文件的代码怎么写 package com.excel.action; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import jxl.Cell; import jxl.CellType; import jxl.LabelCell; import jxl.Sheet; import jxl.Workbo

怎么实现在ASP.NET中制作表格,并将数据库中数据定位到特定的单元格中,谢谢了

问题描述 怎么实现在ASP.NET中制作表格,并将数据库中数据定位到特定的单元格中,谢谢了 现须在ASP.NET的网页中显示报表,报表的格式如下(红框里的是固定不变的,绿框的数据从数据库调用).表格要求:表格样式不变,显示数据库里的数据. 之前尝试用repeater.Gridview控件但都不能将数据定位到特定单元格上.问各位大神,怎么实现这个功能.在下感激不尽! 图片说明 解决方案 GridView可以将数据定位到单元格上,只是你不能简单的数据绑定,你需要用循环配合gridview.rows[

c语言怎么从文件中把数据分别读取,在线等,急求。

问题描述 c语言怎么从文件中把数据分别读取,在线等,急求. csv文件,格式为 字符,字符:字符字符,字符:字符字符,字符:字符...用什么方法把字符读出来分别存起来(三列对应三个字符串数组)?(按照第一列字符的字母顺序存入二叉树)(这三块字符里都有空格) 解决方案 最原始的方法,是你将 CSV 文件中的内容,将一行一行的读出来,然后再进行解析. 解决方案二: 还是用一个2维数组,fread()读取,然后分析字符数组.

http-Eclipse如何读取pcap格式的文件?

问题描述 Eclipse如何读取pcap格式的文件? wireshark抓取的数据包文件是pcap格式,如何java读取文件中HTTP数据头的内容,谢谢! 解决方案 Pcap 文件格式和 WireShark WireShark抓包的pcap文件格式分析 解决方案二: 这个问题,和使用不使用 Java 没有任何关系.关键在于你是否懂得 vwireshark抓取的数据包文件的具体格式,知道就能读懂.否则,无法读取. 解决方案三: 按照pcap的格式来解析数据,同时遵守http协议 解决方案四: vw

java 需要将word里数据转化为html格式

问题描述 java 需要将word里数据转化为html格式 java 需要将word里数据转化为html格式.主要目的是想要保持word里的内容格式 解决方案 最简单的是调用VBA,直接WordDocument.SaveAs 解决方案二: 也可以将notepad设置自动换行,把word的数据粘贴到一个txt文件直接将其后缀改为.html 解决方案三: 可以用Java的POI操作Word,读取Word的内容,然后写入到一个文件中,并保存为.html文件格式. 解决方案四: apache poi ,