¿Cómo convierto la estructura System.Byte
byte[]
en un System.IO.Stream
objeto en C # ?
¿Cómo convierto la estructura System.Byte
byte[]
en un System.IO.Stream
objeto en C # ?
Respuestas:
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:
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.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 el byte[]
constructor, la matriz no se copia, se MemoryStream
refiere 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 MemoryStream
clase.