¿Cómo convierto la estructura System.Byte byte[]en un System.IO.Streamobjeto en C # ?
¿Cómo convierto la estructura System.Byte byte[]en un System.IO.Streamobjeto en C # ?
Respuestas:
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:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
Alternativamente, puede crear un nuevoMemoryStream objeto no redimensionable basado en la matriz de bytes:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
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 el byte[]constructor, la matriz no se copia, se MemoryStreamrefiere a la matriz en el argumento. Esto puede ser bueno y malo, y es una pena que no esté documentado en MSDN :)
Mira en la MemoryStreamclase.