c# vs2003 我有个byte[]数组,如何存入文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# vs2003 我有个byte[]数组,如何存入文件?相关的知识,希望对你有一定的参考价值。

还有,我想在文件中读出byte[]数组,应该这么做?

参考技术A 1、读取文件,并转换为字节流:

FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
byte[] infbytes = new byte[(int)fs.Length];
fs.Read(infbytes, 0, infbytes.Length);
fs.Close();

return infbytes;

2、将字节流写入文件

FileStream fs = new FileStream("D:\\inf.dlv", FileMode.Create, FileAccess.Write);
fs.Write(inf, 0, inf.Length);
fs.Close();本回答被提问者采纳
参考技术B 你的文件什么东东都不知道!!
用MemoryStream吧~把字节储存到二进制流中~
参考技术C 用BufferStream

如何在 C# 中填充 3D 数组的二维

【中文标题】如何在 C# 中填充 3D 数组的二维【英文标题】:How to fill two dimensions of a 3D array in C# 【发布时间】:2021-12-26 16:07:53 【问题描述】:

我正在处理 C# 中的多维数组,我想知道是否可以使用另一个二维数组填充 3 维数组的二维。我有两个数组:

byte[,,] thArray = new byte[1000, 1000, 1000];
byte[,] twArray = new byte[1000, 1000];

现在我需要做这样的事情:

thArray[,,0] = twArray;

【问题讨论】:

您可以尝试使用 2D 数组数组 而不是 3D 数组:byte[][,] thArray = new byte[][,] twArray; @DmitryBychenko 实际上,我需要在循环中填充第三维。不仅用于初始化。 好吧,你试了之后发生了什么? 【参考方案1】:

填充任何类型的数组都需要复制。所以简单的答案是编写一个双循环,将每个值从twArray 复制到thArray。其他答案已经显示了如何做到这一点。

不过,我可能会分享一些使用大型多维数组的经验。

对于 2D 数组,我更喜欢使用 1D 数组周围的包装器,而不是内置的多维数组。这使得一些操作更快,并允许使用 Buffer.BlockCopy 复制大段,并且在与其他系统交互时通常更容易使用。可以像 y*width + x 那样为值建立索引。

使用自定义类型还消除了在循环检查中调用.GetLength() 的风险,因为这种方法比检查常规属性要慢几倍。一个容易犯的错误,但会使循环变慢。

对于 3D 数组,您可以使用相同的方法,只需添加另一个维度。但根据我的经验,这往往比使用锯齿状数组要慢。所以我建议对 3D 数组使用 byte[][] myArray 之类的东西,并使用 myArray[z][y * width + x] 对其进行索引,最好使用一些可以执行所有这些索引的自定义类。

【讨论】:

【参考方案2】:

可以使用 2 个 for 循环将二维数组的值复制到 3 维数组,但保留 3 维数组 z-value 0:

int height = twArray.GetLength(0);
int width = twArray.GetLength(1);

for (int i = 0; i < height; i++)

    for (int j = 0; j < width; j++)
    
        thArray[i, j, 0] = twArray[i, j];
    

【讨论】:

【参考方案3】:

是的,你可以在一个很好的旧 for 中做到这一点循环

 for (int x = 0; x < thArray.GetLength(0); ++x)
   for (int y = 0; y < thArray.GetLength(1); ++y)
     thArray[x, y, 0] = twArray[x, y];

如果你想一次性分配,你可以使用byte[][,] thArray - 二维数组数组

 byte[][,] thArray = new byte[1000][,];

 thArray[0] = twArray;

【讨论】:

以上是关于c# vs2003 我有个byte[]数组,如何存入文件?的主要内容,如果未能解决你的问题,请参考以下文章

c#中如何将byte数组转换成string从而在textbox中显示出来?

vs2010的c#程序怎么能在VS2003中编译,运行?

C# 比较两个包含小写文本的 byte[] 数组

在 VS2003 中加载 c# 项目的问题

C# 就地将 `int[]` 数组转换为 `byte[]` 数组

在java中如何把字节数组存储到数据库?