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中显示出来?