Wie konvertiere ich struct System.Byte byte[]in ein System.IO.StreamObjekt in C # ?
Wie konvertiere ich struct System.Byte byte[]in ein System.IO.StreamObjekt in C # ?
Antworten:
Der einfachste Weg, ein Byte-Array in einen Stream zu konvertieren, ist die Verwendung der MemoryStreamKlasse:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()wenn Sie Ihr Byte-Array zurückhaben möchten.
Sie suchen nach der MemoryStream.WriteMethode .
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.Writeviel mehr Speicher verbraucht alsnew MemoryStream(myByteArray)
MemoryStreamStandardmäß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 MemoryStreambezieht 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 MemoryStreamKlasse.