Maison >développement back-end >C++ >Comment convertir efficacement un flux en un tableau d'octets dans .NET?
L'entrée transformatrice en tableau d'octets est une tâche courante dans la programmation. Il existe de nombreuses façons d'atteindre cet objectif.
Utilisez BinaryReader
Dans .NET 3.5, une méthode couramment utilisée consistait à utiliser la classe BinaryReader, comme le montre le fragment de code ci-dessous:
Cette méthode alloue un tableau de longueur spécifiée et lit tous les contenus du flux dans le tableau. Cependant, cela dépend de la compréhension précise de la longueur du débit, et cela n'est pas toujours disponible.
<code class="language-csharp">Stream s; byte[] b; using (BinaryReader br = new BinaryReader(s)) { b = br.ReadBytes((int)s.Length); }</code>lire et écrire dans les blocs
Si la longueur de l'écoulement n'est pas fiable ou peu fiable, l'utilisation de segments circulaires pour lire l'écoulement peut être plus efficace:
Cette méthode lit à plusieurs reprises les données dans le tampon jusqu'à la fin du courant. Il accumule les données dans MemoryStream avant de retourner le tableau d'octets.ou, dans les versions .NET 4 et supérieures, vous pouvez utiliser Stream.copyto pour obtenir les mêmes résultats que le cycle ci-dessus:
<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>
Autres précautions
<code class="language-csharp">using (MemoryStream ms = new MemoryStream()) { s.CopyTo(ms); return ms.ToArray(); }</code>Le choix de ces méthodes dépend de plusieurs facteurs:
La fiabilité de la longueur du débit:
Si elle est connue et fiable, l'utilisation de BinaryReader peut améliorer l'efficacité.Stream:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!