2009-07-08 6 views
1

Ich habe einen rohen Puffer damit ich brauche 3 andere zu machen, den Kopf, die immer das erste 8 Bytes, Körper ist, der immer von Byte 8 bis? dann Fuß welcher ist? bis zum Ende der Datei.Byte [] Puffer oder Ref/Zeiger? in C#

Wie mache ich einen Puffer von einem bereits vorhandenen Puffer, so dass ich in Körper und Fuß zu füllen. auch wie erstelle ich Kopf, um die ersten 16 Bytes zu verwenden. Ich gehe davon aus, dass ich keinen Ref oder Zeiger verwende.

+0

haben einen Blick auf http://stackoverflow.com/questions/409256/working-with- byte-arrays-in-c und http://stackoverflow.com/questions/2871/reading-acc-data-structure-in-c-from-a-byte-array –

Antwort

2

Sie können Array.Copy() verwenden, um Elemente von einem Array in ein anderes zu kopieren. Sie können die Start- und Endpositionen für Quelle und Ziel angeben.

Sie können auch Buffer.BlockCopy() überprüfen möchten aus.

0

Versuchen Sie es mit Buffer.BlockCopy, die eine schnellere Leistung für primitive Typen im Vergleich zu Array-Operationen bieten sollte. (Warum? Ich weiß nicht, aber MSDN said so)

1

Sie ein Binary von einem Memorystream verwenden können

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