Come faccio a convertire struct System.Byte byte[]in un System.IO.Streamoggetto in C # ?
Come faccio a convertire struct System.Byte byte[]in un System.IO.Streamoggetto in C # ?
Risposte:
Il modo più semplice per convertire un array di byte in un flusso è utilizzare la MemoryStreamclasse:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()se vuoi riavere l'array di byte.
Stai cercando il MemoryStream.Writemetodo .
Ad esempio, il codice seguente scriverà il contenuto di un byte[]array in un flusso di memoria:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
In alternativa, è possibile creare un nuovoMemoryStream oggetto non ridimensionabile basato sull'array di byte:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
MemoryStream.Writerichiede molta più memoria, quindinew MemoryStream(myByteArray)
MemoryStreambuffer di default (proprio come ad esempio con un elenco). Questo può essere risolto facilmente usando il sovraccarico che ti consente di impostare la capacità, ma è davvero utile solo se non ti aspetti di scrivere dati sullo stream (o se sai di quanti byte extra probabilmente avrai bisogno ). Ma ho il sospetto che jitbit potrebbe riferirsi al fatto che a quando si utilizza il byte[]costruttore, l'array non viene copiato - si MemoryStreamriferisce all'array nell'argomento. Questo può essere sia buono che cattivo, ed è un po 'un peccato che non sia documentato su MSDN :)
Guarda in MemoryStreamclasse.