byte [] buffer或ref / pointer?在C#中

时间:2009-07-08 03:48:41

标签: c# binary bytearray

我有一个原始缓冲区,我需要另外3个,头部始终是前8个字节,主体总是从字节8到?那脚是从哪里来的?到他档案的最后。

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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);

答案 2 :(得分:0)

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