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.

È stato utile?

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ì )

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top