繁体   English   中英

将float数组写入二进制文件C#

[英]Write float array into a binary file c#

我有一个float数组:

float[] samples32array

我需要将其转换为二进制文件,以便可以在matlab中读取它。

有什么办法吗?

您可以使用BinaryWriter轻松地将数据写入文件:

foreach (var value in samples32array)
{
    writer.Write(value);
}

现在BinaryWriter可以保证使用低位字节序格式,因此在您的Matlab调用中,您还应该指定machinefmtl以便也以低位字节序格式显式读取它。

这很简单。 首先,您应该使用FileStream并创建一个文件。 然后,您可以使用BinaryWriter ,它可以将任何C#数据类型写入底层流(例如FileStream

using (FileStream file = File.Create(path))
{
    using (BinaryWriter writer = new BinaryWriter(file))
    {
        foreach (float value in samples32array)
        {
            writer.Write(value);
        }
    }
}

由于BinaryWriter的构造函数接受基本类型Stream ,所以可以使用任何流类型。 它适用于文件流以及NetworkStreamMemoryStream等。这是一个非常通用的类。

并且请避免事先将float[]转换为byte[] ,因为它将分配内存,如果数组很大(这不适合您),这将是不好的。

这样的答案显示了一种将float数组转换为byte数组的方法 然后,您可以使用File.WriteAllBytes()方法将其写出到文件中。 但是,MatLab的读取方式将成为问题。

我找到了有关fread命令的MatLab文档 看起来好像有一些参数可以让您定义读取的精度。 您也许可以使用“浮点数”作为精度值。 但是,由于我对MatLab不太熟悉,所以这是一个有根据的猜测。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM