byte [] tampone o ref / puntatore? in C #
Domanda
Ho un tampone grezzo con esso ho bisogno di fare altri 3, la testa che è sempre i primi 8 byte, corpo che è sempre dal byte 8 a? poi piede che è da? alla fine ha un file.
Come faccio a fare un buffer da un buffer già esistente in modo che io possa riempire corpo e del piede. anche come creo il capo di utilizzare i primi 16 byte. Io parto dal presupposto che non sto usando un rif o un puntatore.
Soluzione
È possibile utilizzare Array.Copy () per copiare gli elementi da un array ad un altro. È possibile specificare le posizioni di inizio e di fine per l'origine e la destinazione.
Si consiglia inoltre di controllare le Buffer.BlockCopy ( ) .
Altri suggerimenti
È possibile utilizzare un BinaryReader da un 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);
Prova a usare Buffer.BlockCopy , che dovrebbe fornire prestazioni più veloci per i tipi primitivi rispetto alle operazioni di Array. (Perché? Non lo so, ma MSDN detto così )