C# 读取2进制结构问题

heykit 2012-03-27 07:42:34
有一个文件,我现在需要把他反序列,文件结构如下



|--- ID:
| 姓名:
|----班别 ----- | (未知数量成员)
| | 学号:
| |--- 住址:
|
--- 年级————|
| | |--- ID:
|(未知数量) | | 姓名:
| |----班别 ----- | (未知数量成员)
| | | 学号:
| | |--- 住址:
|
|(未知数量班别)




请教如何读取这种数据?

用UrtualEdit查看结构如下

文档前面结构:ID...姓名...学号..(0)(0)(代表年级和班级)...住址......ID...姓名...学号..(0)(1)...住址......(循环)......
文件后面结构:(0)年级一...(0)班级一...(1)班级二...(2)班级三...(省略)...(1)年级二...(0)班级一...(1)班级二...(2)班级三...(省略)...(2)年级三.....(后面省略)...


请教如何读取如上所示结构的二进制文件?
...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
heykit 2012-03-28
  • 打赏
  • 举报
回复
另外还有一个问题,为什么 文件前面有4个字节无法读取呢?

heykit 2012-03-28
  • 打赏
  • 举报
回复
感谢,我现在能把前面的读出来了

能够遍历到ID: 姓名:学号:住址: 这所有的数据。

现在遇到几个问题。

FileStream fs = new FileStream(strFile, FileMode.Open, FileAccess.Read);
BinaryReader rd = new BinaryReader(fs);
int count =rd.ReadInt32();


1、这里我使用4字节读取,用count做遍历的零界,可是不能读取整个文档的类容,是否应该乘以4?
2、我想请教如何把后面的类容读取,并且与前面的类容关联起来。
3、
后面结构如下

(0)、一年级、1班、2班、3班、(1)、二年级[1班、2班]、(2)、三年级[1班、2班、3班、4班、5班].....

这样不固定的数据,应该怎么取呢?
fpc11 2012-03-28
  • 打赏
  • 举报
回复
1:也许是文件里字节数合不上,可以一个字节一个字节读,完了再转换下就好了。
2:先把定义结构体定义好(全体的)。前面读的数据记录到结构体里,后面的数据再写进去。。
3:不固定的数据,,额。。要么自己一个一个 的读。要么用AarrayList..。。
BinaryReader 我也就用过一次,不太熟悉。不会可以度娘。
你的文件什么样子也不清楚。等高手吧。
fpc11 2012-03-27
  • 打赏
  • 举报
回复
用BinaryReader读出来(二进制文件),text文本的话就直接读了。。然后转成BYTE的存起来。
额。,。,读文件这个应该很简单的。。
定义结构体,
根据读出的文件总长度/结构体长度算出data个数
然后存到数组里。。。再然后这堆数据就任你处置了。。。
heykit 2012-03-27
  • 打赏
  • 举报
回复

我知道,但是不知道怎么入手,能提供一个简短的例程么?
mngzilin 2012-03-27
  • 打赏
  • 举报
回复
结构体

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧