Як перетворити структуру 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
клас.