Heim > Backend-Entwicklung > C++ > Wie kann man einen Eingangsstrom effizient in ein Byte -Array in .NET konvertieren?

Wie kann man einen Eingangsstrom effizient in ein Byte -Array in .NET konvertieren?

Barbara Streisand
Freigeben: 2025-01-31 07:06:13
Original
440 Leute haben es durchsucht

How to Efficiently Convert an Input Stream to a Byte Array in .NET?

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:

using (BinaryReader br = new BinaryReader(s))
{
    b = br.ReadBytes((int)s.Length);
}
Nach dem Login kopieren

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:

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();
    }
}
Nach dem Login kopieren

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:

public static byte[] ReadFully(Stream input)
{
    using (MemoryStream ms = new MemoryStream())
    {
        input.CopyTo(ms);
        return ms.ToArray();
    }
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage