Como faço para converter struct System.Byte
byte[]
em um System.IO.Stream
objeto em c # ?
Como faço para converter struct System.Byte
byte[]
em um System.IO.Stream
objeto em c # ?
Respostas:
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:
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)
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 o byte[]
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 :)
Olhe para a MemoryStream
classe.