byte [] буфер или ссылка / указатель? в C #

У меня есть необработанный буфер, мне нужно сделать еще 3, голова, которая всегда является первыми 8 байтами, тело, которое всегда от байта 8 до? тогда нога откуда? до конца файла.

Как сделать буфер из уже существующего буфера, чтобы я мог заполнить тело и ступню. также как мне создать голову для использования первых 16 байтов. Я предполагаю, что не использую ссылку или указатель.


person Community    schedule 08.07.2009    source источник
comment
взгляните на stackoverflow.com/questions/ 409256 / и stackoverflow.com/questions/2871/   -  person Rex Logan    schedule 08.07.2009


Ответы (3)


Вы можете использовать Array.Copy () для копирования элементов из одного массива в другой. Вы можете указать начальную и конечную позиции для источника и назначения.

Вы также можете проверить Buffer.BlockCopy () .

person colithium    schedule 08.07.2009

Вы можете использовать BinaryReader из MemoryStream

 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);
person Rex Logan    schedule 08.07.2009

Попробуйте использовать Buffer.BlockCopy, который обеспечит более быстрое производительность для примитивных типов по сравнению с операциями с массивами. (почему? Я не знаю, но в MSDN так сказано )

person Jeff Meatball Yang    schedule 08.07.2009