Как преобразовать struct System.Byte byte[] в объект System.IO.Stream в C#?

Как я могу конвертировать структуру System.Bytebyte[] к 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
    };
}

Заглянуть в MemoryStream учебный класс.

      Stream into Byte[]:                                   

MemoryStream memory = (MemoryStream)stream; 

byte[] imageData = memory.ToArray();
Другие вопросы по тегам