Yapıyı C # ' daki System.Byte
byte[]
bir System.IO.Stream
nesneye nasıl dönüştürebilirim ?
Yapıyı C # ' daki System.Byte
byte[]
bir System.IO.Stream
nesneye nasıl dönüştürebilirim ?
Yanıtlar:
Bayt dizisini bir akışa dönüştürmenin en kolay yolu MemoryStream
sınıfı kullanmaktır :
Stream stream = new MemoryStream(byteArray);
stream.ToArray()
bayt dizinizi geri istiyorsanız yine de kullanabilirsiniz .
MemoryStream.Write
Yö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 MemoryStream
nesne oluşturabilirsiniz :
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
MemoryStream.Write
o zamandan çok daha fazla bellek harcadığını lütfen unutmayınnew MemoryStream(myByteArray)
MemoryStream
varsayı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 - MemoryStream
argümandaki diziye başvuruyor. Bu hem iyi hem de kötü olabilir ve MSDN'de belgelenmemiş bir utanç :) :)
İçine bak MemoryStream
sınıfa.