1

我有一个原始缓冲区,我需要制作另外 3 个缓冲区,头部始终是前 8 个字节,主体始终是从字节 8 到 ? 那么脚是从哪来的?到他文件的末尾。

我如何从已经存在的缓冲区中创建一个缓冲区,以便我可以填充身体和脚部。还有我如何创建头来使用前 16 个字节。我假设我没有使用 ref 或指针。

4

3 回答 3

2

您可以使用 Array.Copy() 将元素从一个数组复制到另一个数组。您可以指定源和目标的开始和结束位置。

您可能还想查看Buffer.BlockCopy()

于 2009-07-08T03:58:42.323 回答
1

您可以使用 MemoryStream 中的 BinaryReader

 System.IO.MemoryStream stm = new System.IO.MemoryStream( buf, 0, buf.Length );
 System.IO.BinaryReader rdr = new System.IO.BinaryReader( stm );

 int bodyLen = xxx;
 byte[] head = rdr.ReadBytes(8)
 byte[] body = rdr.ReadBytes(bodyLen );
 byte[] foot = rdr.ReadBytes(buf.Length-bodylen-8);
于 2009-07-08T04:38:28.607 回答
0

尝试使用Buffer.BlockCopy,与 Array 操作相比,它应该为原始类型提供更快的性能。(为什么?我不知道,但 MSDN是这么说的)

于 2009-07-08T04:01:06.843 回答