Как мне преобразовать структуру 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
класс.