¿Cómo convierto la estructura System.Byte byte[]en un System.IO.Streamobjeto en C # ?
759
La forma más fácil de convertir una matriz de bytes en una secuencia es usar la MemoryStreamclase:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()si desea recuperar su matriz de bytes.Estás buscando el
MemoryStream.Writemétodo .Por ejemplo, el siguiente código escribirá el contenido de una
byte[]matriz en una secuencia de memoria:Alternativamente, puede crear un nuevo
MemoryStreamobjeto no redimensionable basado en la matriz de bytes:fuente
MemoryStream.Writees mucho más memoria que consume entoncesnew MemoryStream(myByteArray)MemoryStreambú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, seMemoryStreamrefiere 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
MemoryStreamclase.fuente