¿Cómo convierto la estructura System.Byte
byte[]
en un System.IO.Stream
objeto en C # ?
759
La forma más fácil de convertir una matriz de bytes en una secuencia es usar la MemoryStream
clase:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()
si desea recuperar su matriz de bytes.Estás buscando el
MemoryStream.Write
método .Por ejemplo, el siguiente código escribirá el contenido de una
byte[]
matriz en una secuencia de memoria:Alternativamente, puede crear un nuevo
MemoryStream
objeto no redimensionable basado en la matriz de bytes:fuente
MemoryStream.Write
es mucho más memoria que consume entoncesnew MemoryStream(myByteArray)
MemoryStream
búfer por defecto (al igual que con, por ejemplo, una lista). Esto se puede solucionar fácilmente utilizando la sobrecarga que le permite establecer la capacidad, pero solo es realmente útil si no espera escribir ningún dato en la secuencia (o si sabe cuántos bytes adicionales es probable que necesite ) Pero sospecho que jitbit podría estar refiriéndose al hecho de que a cuando usa elbyte[]
constructor, la matriz no se copia, seMemoryStream
refiere a la matriz en el argumento. Esto puede ser bueno y malo, y es una pena que no esté documentado en MSDN :)El enfoque general para escribir en cualquier flujo (no solo
MemoryStream
) es usarBinaryWriter
:fuente
Mira en la
MemoryStream
clase.fuente