`
dazhilao
  • 浏览: 244263 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

c#中读取二进制结构体文件

阅读更多
文件结构体中有 :
unsigned short int Size; 
char ID;  
char Type; 
short int IDS;  
unsigned short int Date; 


采用二进制文件方式一个字节一个字节读,看看这样成不成  

/// <summary>
  /// 读取二进制文件
  /// </summary>
  /// <param name="fileName">文件名</param>
  public void ReadMyBinaryFile(string fileName)
  {
  FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
  /*
  * public unsafe struct DATAPACKET
  {
  public fixed ushort head[6];
  public ushort Size;  
  public byte ID;  
  public byte Type; 
  public short IDS; 
  public ushort Date;
  } 
  */
  int iFileLength = fileStream.Length;//文件长度
  int iStructLength = 20;//结构体的字节长度
  int iTimes = iFileLength / iStructLength;//共有多少个字节

  DATAPACKET tmp;
  byte[] byTmp = new byte[2];

  for (int i = 0; i < iTimes; i++)
  {
  //读头部六个短整型字节
  for (int j = 0; j < 6; j++)
  {
  if (fileStream.Read(byTmp, 0, 2) != 2)
  {
  Console.WriteLine("file read error!");
  return;
  }
  tmp.head[j] = BitConverter.ToUInt16(byTmp, 0);
  }
  //读大小
  if (fileStream.Read(byTmp, 0, 2) != 2)
  {
  Console.WriteLine("file read error!");
  return;
  }
  tmp.Size= BitConverter.ToUInt16(byTmp, 0);
  //读id
  tmp.ID = fileStream.ReadByte();
  //读类型
  tmp.Type = fileStream.ReadByte();
  //读ids
  if (fileStream.Read(byTmp, 0, 2) != 2)
  {
  Console.WriteLine("file read error!");
  return;
  }
  tmp.IDS = BitConverter.ToInt16(byTmp, 0);
  //读日期
  if (fileStream.Read(byTmp, 0, 2) != 2)
  {
  Console.WriteLine("file read error!");
  return;
  }
  tmp.Date = BitConverter.ToUInt16(byTmp, 0);
  /*
  .........对读出变量进行处理
  */

  }
  /*
  .....后续处理
  */
  fileStream.Close();

  }
分享到:
评论

相关推荐

    结构体序列化读写二进制文件类

    在本例中,它涉及将结构体实例转换为二进制流,以便保存到文件。这样做的好处在于,二进制格式通常占用更少的存储空间,并且可以更快地读取和写入。 二进制文件与文本文件不同,它不使用人类可读的字符编码,而是...

    C#从文件中存储及读取结构体示例

    总结,C#中存储和读取结构体到二进制文件的关键在于使用`BinaryFormatter`进行序列化和反序列化。理解这个过程对于处理数据持久化、数据传输等任务至关重要。当然,选择合适的序列化方法还需根据具体需求,考虑性能...

    二进制文件的读写,当前时间写入到dat文件中,可以读入读出.C#源代码

    // 读取二进制时间 long binaryTime = br.ReadInt64(); DateTime readTime = DateTime.FromBinary(binaryTime); Console.WriteLine($"读取的时间:{readTime}"); } ``` 这里使用了`ReadInt64`来读取之前写入...

    一个简单的读取二进制文件并进行排序

    在读取二进制文件后,数据通常会被存储到内存中的数组或结构体中。一旦数据加载完毕,我们可以应用各种排序算法对其进行排序,如冒泡排序、选择排序、插入排序、快速排序、归并排序等。这些算法的选择取决于数据规模...

    C# 解析二进制文件程序

    在给定的" C# 解析多种格式的二进制文件程序.cs "源代码文件中,可能包含上述技术的实现,用于解析ASCII和16进制字符串等不同格式的数据。通过阅读和理解这个程序,开发者可以学习如何灵活地处理各种二进制文件,这...

    Excel 转二进制工具

    《Excel转二进制工具详解:C#在游戏开发中的应用》 在游戏开发领域,数据管理是一项至关重要的任务,而Excel作为一种强大的表格处理软件,常被用来存储和组织策划人员的各种游戏数据。然而,游戏运行时往往需要将...

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

    C# 二进制文件读写通用方法 在日常的工作中,我们经常需要进行一些二进制文件或协议...本文介绍了一种在 C# 中实现快速读写二进制文件通用的方法,使用 C# 语言定义数据结构和读取数据,可以实现快速读写二进制文件。

    dotnet C# 基础二进制处理 二进制数组与结构体的互转.rar

    例如,当你需要从文件中读取或向网络发送图像数据时,可能会用到二进制数组。 结构体(struct)是C#中的复合数据类型,它可以包含多个不同的成员,如整数、浮点数、字符等。结构体的大小通常是固定的,且它们在内存...

    STL文件二进制转ASCII.docx

    在本文中,我们使用 C++ 语言实现了 STL 文件的二进制格式到 ASCII 格式的转换。该代码可以应用于各种 CAD、CAM 和 3D 打印等领域,帮助用户快速地将 STL 文件转换为 ASCII 格式,以便更好地进行后续处理和分析。 ...

    C#读取bin文件

    以及`StreamReader`,虽然主要用于读取文本文件,但在某些情况下也可以用来读取二进制文件。 下面是一个简单的示例,演示了如何读取.bin文件并将内容显示在TextBox中: ```csharp using System; using System.IO; ...

    C#读取二进制文件方法分析

    在C#中,读取二进制文件是一个常见的任务,特别是在处理非文本格式的数据时,如图像、音频、自定义数据结构等。本篇文章将详细分析C#中读取二进制文件的方法及其原理。 首先,C#提供了System.IO命名空间下的...

    C#控制台下读取3D模型的STL格式文件

    由于STL文件通常是二进制格式,所以`BinaryReader`更为合适,因为它能高效地读取二进制数据。以下是基本的步骤: 1. 打开文件: 使用`File.OpenRead`方法创建一个`FileStream`对象,传入STL文件的路径。 2. 创建`...

    C# 读写二进制文件的一个示例

    内容索引:C#源码,文件操作,FSO,二进制 C# 读写二进制文件的一个示例,演示如何以二进制方式写入文件,以二进制方式读出文件,下方框主要用来显示读取出来的二进制文件。C#新手朋友朋友们可拿去研究文件操作,应该...

    C#内存共享图片和结构体.zip

    图片通常以二进制格式存储,如JPEG或PNG,可以直接作为字节数组(byte[])进行传输。 内存映射文件是另一种实现内存共享的方法,它允许多个进程将同一块磁盘上的文件映射到自己的地址空间。在C#中,可以使用`System...

    dotnet C# 将 Byte 二进制数组使用不安全代码快速转换为 int 或结构体数组.rar

    在处理二进制数据时,例如从网络流或数据库读取的数据,有时我们需要将这些数据转换为更易于操作的类型,如整数(int)或自定义结构体数组。本教程将深入探讨如何使用C#中的不安全代码来高效地完成这一任务。 不...

    Segy文件的读取(c#)

    然后,可以使用`BinaryReader`类来读取二进制数据。例如: ```csharp using (FileStream fs = new FileStream("seg.y", FileMode.Open)) using (BinaryReader br = new BinaryReader(fs)) { // 在这里读取SegY头...

    TcpEthernet C#读取OMRON PLC实例源码

    标题中的“TcpEthernet C#读取OMRON PLC实例源码”指的是使用C#编程语言,通过TCP/IP协议来实现对OMRON(欧姆龙)可编程逻辑控制器(PLC)的数据读取操作。这个实例源码是针对工业自动化领域的一个常见应用场景,...

    C#读取mat文件(csmatio).zip

    MAT文件是MATLAB用于存储变量、函数和其他数据的二进制格式。在C#中,我们可以利用csmatio库来处理这些文件,该库提供了一个方便的API,允许我们轻松地读取和写入MAT文件。 首先,让我们了解一下csmatio库。csmatio...

    PE文件解析(C#)

    C#中解析PE文件,可以使用System.IO.BinaryReader类读取文件的二进制数据,配合结构体来表示PE文件的各个部分。例如,定义一个包含DOS头、NT头、节表结构的类或结构体,并使用BinaryReader.Read方法逐个读取字段。...

Global site tag (gtag.js) - Google Analytics