Wie konvertiere ich struct System.Byte
byte[]
in ein System.IO.Stream
Objekt in C # ?
Wie konvertiere ich struct System.Byte
byte[]
in ein System.IO.Stream
Objekt in C # ?
Antworten:
Der einfachste Weg, ein Byte-Array in einen Stream zu konvertieren, ist die Verwendung der MemoryStream
Klasse:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()
wenn Sie Ihr Byte-Array zurückhaben möchten.
Sie suchen nach der MemoryStream.Write
Methode .
Der folgende Code schreibt beispielsweise den Inhalt eines byte[]
Arrays in einen Speicherstrom:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
Alternativ können Sie ein neuesMemoryStream
Objekt ohne Größenänderung basierend auf dem Byte-Array erstellen :
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
MemoryStream.Write
viel mehr Speicher verbraucht alsnew MemoryStream(myByteArray)
MemoryStream
Standardmäßig ist im Puffer zusätzlicher Speicherplatz zugewiesen (genau wie bei einer Liste). Dies kann leicht mithilfe der Überlastung behoben werden, mit der Sie die Kapazität einstellen können. Sie ist jedoch nur dann wirklich nützlich, wenn Sie nicht erwarten, Daten in den Stream zu schreiben (oder wenn Sie wissen, wie viele zusätzliche Bytes Sie wahrscheinlich benötigen ). Ich vermute jedoch, dass sich jitbit möglicherweise auf die Tatsache bezieht, dass bei Verwendung des byte[]
Konstruktors das Array nicht kopiert wird - dies MemoryStream
bezieht sich auf das Array im Argument. Dies kann sowohl gut als auch schlecht sein, und es ist ein bisschen schade, dass es nicht auf MSDN dokumentiert ist :)
Schau in die MemoryStream
Klasse.