Як перетворити структуру System.Byte byte[]на System.IO.Streamоб'єкт у C # ?
Як перетворити структуру System.Byte byte[]на System.IO.Streamоб'єкт у C # ?
Відповіді:
Найпростіший спосіб перетворення байтового масиву в потік - це використання MemoryStreamкласу:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()якщо хочете повернути байтовий масив.
Ви шукаєте MemoryStream.Writeметод .
Наприклад, наступний код запише вміст byte[]масиву в потік пам'яті:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
Крім того, ви можете створити новий об'єкт , що не змінює розмір, MemoryStreamна основі байтового масиву:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
MemoryStream.Writeнабагато більше споживає пам'ять тодіnew MemoryStream(myByteArray)
MemoryStreamбуфері за замовчуванням виділено додатковий простір (як, наприклад, список). З цим легко впоратися, використовуючи перевантаження, що дозволяє встановити потужність, але це дуже корисно, лише якщо ви не розраховуєте записувати будь-які дані в потік (або якщо ви знаєте, скільки зайвих байтів вам, можливо, знадобиться ). Але я підозрюю, що jitbit може посилатися на той факт, що, коли ви використовуєте byte[]конструктор, масив не копіюється - MemoryStreamпосилається на масив в аргументі. Це може бути і добре, і погано, і це шкода, що це не зафіксовано в MSDN :)
Загляньте в MemoryStreamклас.