Yapıyı C # ' daki System.Byte byte[]bir System.IO.Streamnesneye nasıl dönüştürebilirim ?
Yapıyı C # ' daki System.Byte byte[]bir System.IO.Streamnesneye nasıl dönüştürebilirim ?
Yanıtlar:
Bayt dizisini bir akışa dönüştürmenin en kolay yolu MemoryStreamsınıfı kullanmaktır :
Stream stream = new MemoryStream(byteArray);
stream.ToArray()bayt dizinizi geri istiyorsanız yine de kullanabilirsiniz .
MemoryStream.WriteYöntemi arıyorsunuz .
Örneğin, aşağıdaki kod bir byte[]dizinin içeriğini bir bellek akışına yazar:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
Alternatif olarak, bayt dizisine dayalı olarak yeni , yeniden boyutlandırılamayan bir MemoryStreamnesne oluşturabilirsiniz :
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
MemoryStream.Writeo zamandan çok daha fazla bellek harcadığını lütfen unutmayınnew MemoryStream(myByteArray)
MemoryStreamvarsayılan olarak ayrılan fazla alan vardır (örneğin bir listede olduğu gibi). Bu, kapasiteyi ayarlamanıza izin veren aşırı yükü kullanarak kolayca çözülebilir, ancak yalnızca akışa herhangi bir veri yazmayı beklemiyorsanız (veya ne kadar ekstra bayta ihtiyacınız olduğunu biliyorsanız) gerçekten yararlıdır. ). Ancak, jitbit'in yapıcıyı kullandığınızda byte[], dizinin kopyalanmadığı gerçeğine atıfta bulunabileceğinden şüpheleniyorum - MemoryStreamargümandaki diziye başvuruyor. Bu hem iyi hem de kötü olabilir ve MSDN'de belgelenmemiş bir utanç :) :)
İçine bak MemoryStreamsınıfa.