我有一个原始缓冲区,我需要另外3个,头部始终是前8个字节,主体总是从字节8到?那脚是从哪里来的?到他档案的最后。
如何从已有的缓冲区制作缓冲区,以便我可以填充身体和脚部。我如何创建头使用前16个字节。我假设我没有使用ref或指针。
答案 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)