Как преобразовать struct System.Byte byte[] в объект System.IO.Stream в C#?
Как я могу конвертировать структуру System.Byte
byte[]
к System.IO.Stream
объект в C#?
6 ответов
Решение
Самый простой способ преобразовать байтовый массив в поток - это использовать MemoryStream
учебный класс:
Stream stream = new MemoryStream(byteArray);
Вы ищете 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
) использовать BinaryWriter
:
static void Write(Stream s, Byte[] bytes)
{
using (var writer = new BinaryWriter(s))
{
writer.Write(bytes);
}
}
Если вы получаете сообщение об ошибке с другими примерами MemoryStream здесь, вам нужно установить Position на 0.
public static Stream ToStream(this bytes[] bytes)
{
return new MemoryStream(bytes)
{
Position = 0
};
}
Stream into Byte[]:
MemoryStream memory = (MemoryStream)stream;
byte[] imageData = memory.ToArray();