Como faço para converter struct System.Byte
byte[]
em um System.IO.Stream
objeto em c # ?
759
A maneira mais fácil de converter uma matriz de bytes em um fluxo é usando a MemoryStream
classe:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()
lo se quiser recuperar sua matriz de bytes.Você está procurando o
MemoryStream.Write
método .Por exemplo, o código a seguir gravará o conteúdo de uma
byte[]
matriz em um fluxo de memória:Como alternativa, você pode criar um novo
MemoryStream
objeto não redimensionável com base na matriz de bytes:fonte
MemoryStream.Write
é muito mais memória consome entãonew MemoryStream(myByteArray)
MemoryStream
buffer 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 obyte[]
construtor, a matriz não é copiada -MemoryStream
refere-se à matriz no argumento. Isso pode ser bom e ruim, e é um pouco de uma vergonha que não está documentada no MSDN :)A abordagem geral para gravar em qualquer fluxo (não apenas
MemoryStream
) é usarBinaryWriter
:fonte
Olhe para a
MemoryStream
classe.fonte