Comment convertir une structure System.Byte
byte[]
en System.IO.Stream
objet en C # ?
759
La façon la plus simple de convertir un tableau d'octets en un flux est d'utiliser la MemoryStream
classe:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()
si vous souhaitez récupérer votre tableau d'octets.Vous cherchez la
MemoryStream.Write
méthode .Par exemple, le code suivant écrira le contenu d'un
byte[]
tableau dans un flux mémoire:Vous pouvez également créer un nouvel
MemoryStream
objet non redimensionnable basé sur le tableau d'octets:la source
MemoryStream.Write
consomme alors beaucoup plus de mémoirenew MemoryStream(myByteArray)
MemoryStream
tampon par défaut (comme avec par exemple une liste). Cela peut être traité facilement en utilisant la surcharge qui vous permet de définir la capacité, mais n'est vraiment utile que si vous ne vous attendez pas à écrire des données dans le flux (ou si vous savez de combien d'octets supplémentaires vous aurez probablement besoin ). Mais je soupçonne que jitbit pourrait faire référence au fait que lorsque vous utilisez lebyte[]
constructeur, le tableau n'est pas copié - leMemoryStream
fait référence au tableau dans l'argument. Cela peut être à la fois bon et mauvais, et c'est un peu dommage qu'il ne soit pas documenté sur MSDN :)L'approche générale pour écrire dans n'importe quel flux (pas seulement
MemoryStream
) consiste à utiliserBinaryWriter
:la source
Regardez dans la
MemoryStream
classe.la source