Como faço para converter struct System.Byte byte[]em um System.IO.Streamobjeto em c # ?
Como faço para converter struct System.Byte byte[]em um System.IO.Streamobjeto em c # ?
Respostas:
A maneira mais fácil de converter uma matriz de bytes em um fluxo é usando a MemoryStreamclasse:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()lo se quiser recuperar sua matriz de bytes.
Você está procurando o MemoryStream.Writemétodo .
Por exemplo, o código a seguir gravará o conteúdo de uma byte[]matriz em um fluxo de memória:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
Como alternativa, você pode criar um novoMemoryStream objeto não redimensionável com base na matriz de bytes:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
MemoryStream.Writeé muito mais memória consome entãonew MemoryStream(myByteArray)
MemoryStreambuffer por padrão (assim como, por exemplo, em uma lista). Isso pode ser resolvido facilmente usando a sobrecarga que permite definir capacidade, mas só é realmente útil se você não espera gravar dados no fluxo (ou se você sabe quantos bytes extras provavelmente precisará ) Mas suspeito que jitbit possa estar se referindo ao fato de que, quando você usa o byte[]construtor, a matriz não é copiada - MemoryStreamrefere-se à matriz no argumento. Isso pode ser bom e ruim, e é um pouco de uma vergonha que não está documentada no MSDN :)
Olhe para a MemoryStreamclasse.