Maison > développement back-end > C++ > Comment convertir efficacement un flux d'entrée en un tableau d'octets en C #?

Comment convertir efficacement un flux d'entrée en un tableau d'octets en C #?

Patricia Arquette
Libérer: 2025-01-31 06:56:09
original
368 Les gens l'ont consulté

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

C # Stream d'entrée vers le tableau des octets: un guide pratique

La conversion d'un flux d'entrée en un tableau d'octets est une tâche courante lors de la gestion des données binaires en C #. La meilleure méthode dépend si vous connaissez la taille du flux.

Taille connue du flux:

Si la longueur du flux est disponible, BinaryReader.ReadBytes offre une solution simple:

using (BinaryReader br = new BinaryReader(s))
{
    byte[] b = br.ReadBytes((int)s.Length);
}
Copier après la connexion

Cela lit directement l'ensemble du flux dans un tableau d'octets.

Taille du flux inconnu:

Pour les flux avec des longueurs inconnues, une approche itérative plus robuste est nécessaire:

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();
}
Copier après la connexion

Cette méthode lit le flux en morceaux, accumulant les données dans un MemoryStream avant de la convertir en un tableau d'octets.

.net 4 et supérieur: stream.copyto

.NET 4 et les versions ultérieures offrent une solution plus efficace et concise en utilisant Stream.CopyTo:

using (MemoryStream ms = new MemoryStream())
{
    input.CopyTo(ms);
    byte[] b = ms.ToArray();
}
Copier après la connexion

Cela gère élégamment les flux de toute taille.

Gestion des performances et des ressources:

N'oubliez pas que la lecture en morceaux peut avoir un impact sur les performances. Expérimentez avec différentes tailles de tampons pour optimiser vos besoins spécifiques. Assurez-vous toujours une fermeture de flux appropriée pour éviter les fuites de ressources.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal