Wie konvertiere ich struct System.Byte
byte[]
in ein System.IO.Stream
Objekt in C # ?
759
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:Alternativ können Sie ein neues
MemoryStream
Objekt ohne Größenänderung basierend auf dem Byte-Array erstellen :quelle
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 desbyte[]
Konstruktors das Array nicht kopiert wird - diesMemoryStream
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 :)Der allgemeine Ansatz zum Schreiben in einen Stream (nicht nur
MemoryStream
) besteht darin, Folgendes zu verwendenBinaryWriter
:quelle
Schau in die
MemoryStream
Klasse.quelle