蜡笔小欣丫 2024-08-01 10:23 采纳率: 0%
浏览 18

C# 二进制数据读取转化为单精度浮点数


            //将文件读取为流格式
            FileStream fileStream = new FileStream(x_path, FileMode.Open, FileAccess.Read);
            //创建Byte数组,根据文件大小分配缓冲区
            byte[] bl = new byte[fileStream.Length];
            //读取文件内容到缓冲区
            fileStream.Read(bl, 0, bl.Length);

            float[] shotResultWayCurveInjectionCylinder = new float[30001];
            int i = 0;
            //曲线部分
            for ( ; i<=100;i++)
            {
           shotResultWayCurveInjectionCylinder[1] = BitConverter.ToSingle(bl, 339 + i * 4)
}

如上面 的代码所示,我读取了一个二进制的文件,想从数据流指定位置从小端读取数据并且转化为单精度浮点数,保留两位小数。
上面代码是从大端读取指定位置的四个字节,转化为单精度浮点数,请按照我的想法修改我的代码,来实现我想要的功能,谢谢!

  • 写回答

1条回答 默认 最新

  • wanghui0380 2024-08-01 10:58
    关注

    不想手写,直接用库把
    nuget:system.buffers,System.Memory
    用法:

    还是补个demo

       //没有文件,我模拟数据了
      float[] temp = new float[] { 0.1f, 0.2f, 0.3f };
    
      //C#本身小端,处理的时候我懒得多做啥操作了,直接反向
      var buffer = temp.SelectMany(p => BitConverter.GetBytes(p).Reverse()).ToArray();
    
    
      var source = buffer.AsSpan();
            
      while (System.Buffers.Binary.BinaryPrimitives.TryReadSingleBigEndian(source,out var value))
      {
          //这里value是你要的,你想怎么处置他我不管了,我这里就是打印
           Console.WriteLine(value);
          //把source 分割一下继续读取一个
          source = source.Slice(sizeof(float));
      }
    
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 8月1日

悬赏问题

  • ¥15 MS中不知道高分子的构型怎么构建模型
  • ¥60 QQOP数据,什么是op数据号,怎么提取op数据!能不能大量提取(语言-c语言)
  • ¥15 matlab代码 关于微分方程和嵌套的分段函数。
  • ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密