小编Lev*_* M.的帖子

从文件中高效读取结构化二进制数据

我有以下代码片段,用于读取二进制文件并验证它:

 FileStream f = File.OpenRead("File.bin");
 MemoryStream memStream = new MemoryStream();
 memStream.SetLength(f.Length);
 f.Read(memStream.GetBuffer(), 0, (int)f.Length);
 f.Seek(0, SeekOrigin.Begin);
 var r = new BinaryReader(f);
 Single prevVal=0;
 do
 {
    r.ReadUInt32();
    var val = r.ReadSingle();
    if (prevVal!=0) {
       var diff = Math.Abs(val - prevVal) / prevVal;
       if (diff > 0.25)
          Console.WriteLine("Bad!");
    }
    prevVal = val;
 }
 while (f.Position < f.Length);
Run Code Online (Sandbox Code Playgroud)

不幸的是,它运行速度非常慢,我正在寻求改进。在 C++ 中,我只需将文件读入字节数组,然后将该数组重新转换为结构数组:

struct S{
   int a;
   float b;
}
Run Code Online (Sandbox Code Playgroud)

我将如何在 C# 中执行此操作?

c# optimization binaryfiles

5
推荐指数
1
解决办法
1612
查看次数

标签 统计

binaryfiles ×1

c# ×1

optimization ×1