Heim >Backend-Entwicklung >C++ >Wie kann man einen Eingangsstrom effizient in ein Byte -Array in .NET konvertieren?
Konvertieren Eingabestreams in Byte -Arrays in .NET: Eine vergleichende Analyse
.NET bietet verschiedene Möglichkeiten, einen Eingabestream in ein Byte -Array zu verwandeln. Dieser Artikel vergleicht häufige Methoden, wobei ihre Stärken und Schwächen hervorgehoben werden.
Der einfachste Ansatz verwendet BinaryReader.ReadBytes
, wie unten gezeigt:
<code class="language-csharp">using (BinaryReader br = new BinaryReader(s)) { b = br.ReadBytes((int)s.Length); }</code>
Dies ist effizient, wenn die Länge des Streams (s.Length
) vorher bekannt ist. Dies ist jedoch nicht immer der Fall.
Für Streams mit unbekannten Längen ist eine robustere Lösung erforderlich. Die folgende Methode mit Stream.Read
verwendete die Streams mit variabler Länge effektiv:
<code class="language-csharp">public static byte[] ReadFully(Stream input) { byte[] buffer = new byte[16 * 1024]; using (MemoryStream ms = new MemoryStream()) { int read; while ((read = input.Read(buffer, 0, buffer.Length)) > 0) { ms.Write(buffer, 0, read); } return ms.ToArray(); } }</code>
Diese Methode liest den Stream iterativ in einen Puffer, bis alle Daten verarbeitet werden.
.NET 4.0 und spätere Versionen bieten eine prägnantere und effizientere Alternative mit Stream.CopyTo
:
<code class="language-csharp">public static byte[] ReadFully(Stream input) { using (MemoryStream ms = new MemoryStream()) { input.CopyTo(ms); return ms.ToArray(); } }</code>
Dies erzielt das gleiche Ergebnis wie die vorherige Methode, jedoch mit verbesserter Zuversicht.
Die optimale Methode hängt von Ihren spezifischen Anforderungen ab. BinaryReader.ReadBytes
ist geeignet, wenn die Stromlänge bekannt ist, während Stream.ReadFully
(in beiden Implementierungen) eine zuverlässige Lösung für Streams mit unbekannter oder variabler Länge liefert. Die Methode Stream.CopyTo
ist die effizienteste und lesbarste Option für .NET 4.0 und höher.
Das obige ist der detaillierte Inhalt vonWie kann man einen Eingangsstrom effizient in ein Byte -Array in .NET konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!