Comment convertir une structure System.Byte
byte[]
en System.IO.Stream
objet en C # ?
Comment convertir une structure System.Byte
byte[]
en System.IO.Stream
objet en C # ?
Réponses:
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:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
Vous pouvez également créer un nouvelMemoryStream
objet non redimensionnable basé sur le tableau d'octets:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
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 le byte[]
constructeur, le tableau n'est pas copié - le MemoryStream
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 :)
Regardez dans la MemoryStream
classe.