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

Wie kann man einen Eingangsstrom effizient in ein Byte -Array in C#konvertieren?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-31 06:56:09366Durchsuche

How to Efficiently Convert an Input Stream to a Byte Array in C#?

C# Eingabestream zum Byte -Array: Eine praktische Anleitung

Ein Eingabestream in ein Byte -Array konvertieren, ist eine häufige Aufgabe bei der Behandlung von Binärdaten in C#. Die beste Methode hängt davon ab, ob Sie die Größe des Streams kennen.

Bekannte Streamgröße:

Wenn die Länge des Streams verfügbar ist, bietet BinaryReader.ReadBytes eine einfache Lösung:

<code class="language-csharp">using (BinaryReader br = new BinaryReader(s))
{
    byte[] b = br.ReadBytes((int)s.Length);
}</code>

Dies liest den gesamten Stream direkt in ein Byte -Array.

Unbekannte Streamgröße:

Für Streams mit unbekannten Längen ist ein robusterer iterativerer Ansatz erforderlich:

<code class="language-csharp">using (MemoryStream ms = new MemoryStream())
{
    byte[] buffer = new byte[16 * 1024]; // Adjust buffer size as needed
    int read;
    while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        ms.Write(buffer, 0, read);
    }
    byte[] b = ms.ToArray();
}</code>

Diese Methode liest den Stream in Stücken und sammel MemoryStream

.net 4 und höher: stream.copyto

.NET 4 und spätere Versionen bieten eine effizientere und prägnantere Lösung mit

:

Stream.CopyTo

Dies gilt elegant Streams jeder Größe.
<code class="language-csharp">using (MemoryStream ms = new MemoryStream())
{
    input.CopyTo(ms);
    byte[] b = ms.ToArray();
}</code>

Leistung und Ressourcenverwaltung:

Denken Sie daran, dass das Lesen in Stücken die Leistung beeinflussen kann. Experimentieren Sie mit verschiedenen Puffergrößen, um Ihre spezifischen Anforderungen zu optimieren. Stellen Sie immer einen ordnungsgemäßen Verschluss des Stroms sicher, um Ressourcenlecks zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie kann man einen Eingangsstrom effizient in ein Byte -Array in C#konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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