Come faccio a convertire struct System.Byte
byte[]
in un System.IO.Stream
oggetto in C # ?
Come faccio a convertire struct System.Byte
byte[]
in un System.IO.Stream
oggetto in C # ?
Risposte:
Il modo più semplice per convertire un array di byte in un flusso è utilizzare la MemoryStream
classe:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()
se vuoi riavere l'array di byte.
Stai cercando il MemoryStream.Write
metodo .
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.Write
richiede molta più memoria, quindinew MemoryStream(myByteArray)
MemoryStream
buffer 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 MemoryStream
riferisce all'array nell'argomento. Questo può essere sia buono che cattivo, ed è un po 'un peccato che non sia documentato su MSDN :)
Guarda in MemoryStream
classe.