Come posso convertire l'array byte[]
in streaming in C#?Come si converte il byte [] in streaming in C#?
risposta
Il modo più semplice per convertire un array di byte a un flusso sta usando la classe MemoryStream
:
Stream stream = new MemoryStream(byteArray);
Si prega di notare che questo modo di creare uno stream non è forse l'ideale: "Questo costruttore non espone il flusso sottostante. GetBuffer lancia UnauthorizedAccessException. " http://msdn.microsoft.com/en-us/library/e55f3s5k.aspx – noocyte
@noocyte qual è il modo ideale allora? – developerbmw
ma è comunque possibile utilizzare 'stream.ToArray()' se si desidera ripristinare l'array di byte. –
Cerca nella classe MemoryStream
.
Stai cercando il MemoryStream.Write
method. Ad esempio, il codice seguente scrive il contenuto di una matrice byte[]
in un flusso di memoria:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
In alternativa, si potrebbe create a new, non ridimensionabile MemoryStream
dell'oggetto in base alla matrice di byte:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
Questa è la migliore risposta. È conciso e copre tutte le applicazioni pratiche. C'è un trucco con l'utilizzo del costruttore basato su array di byte come indicato qui - il flusso risultante non è ridimensionabile. – Jduv
Ricorda inoltre di ripristinare lo stream in seguito: stream.Seek (0, SeekOrigin.Begin); –
Si noti che la prima opzione 'MemoryStream.Write' richiede molta più memoria quindi' new MemoryStream (myByteArray) ' – Alex
L'approccio generale di scrivere in qualsiasi flusso (non solo MemoryStream
) è quello di utilizzare BinaryWriter
:
static void Write(Stream s, Byte[] bytes)
{
using (var writer = new BinaryWriter(s))
{
writer.Write(bytes);
}
}
Che tipo di flusso? Perché? –