veydlin
@veydlin
Мне никогда не жалко средств на свое любопытство

Как преобразовать массив байт в любой тип?

Пытаюсь сделать с помощью MemoryStream, но выдает ошибку "Конец потока обнаружен до завершения разбора."

Вот простой код для теста который я использую
byte[] data = new byte[] { 1 };
using (var stream = new MemoryStream()) {
    var formatter = new BinaryFormatter();
    stream.Write(data, 0, data.Length);
    stream.Position = 0;
    stream.Seek(0, SeekOrigin.Begin);
    var endDataPacket = (byte)formatter.Deserialize(stream);
}
  • Вопрос задан
  • 717 просмотров
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
попытайтесь понять тут https://docs.microsoft.com/ru-ru/dotnet/api/system...

сериализатор сохраняет , по всей видимости, еще хоть что то о мета данных. а ДЕсериализатор, пытается их найти... с одним байтом этот фокус не проходит

ps для понимания, опробуйте https://docs.microsoft.com/ru-ru/dotnet/api/system... это должно сработать. и только после этого, вернитесь к вопросам:
- любой объект
- сериализация
- ДЕсериализация

pps
абсолютно рабочий код (!!! ну на самом деле тоже исправлено!) ;))
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace stream_to_any
{
    class Program
    {
        static void Main(string[] args)
        {
            var data = new byte[] { 1, 2 };
            using (var stream = new MemoryStream())
            {
                var formatter = new BinaryFormatter();
                formatter.Serialize(stream, data);
                stream.Seek(0, SeekOrigin.Begin);
                var endDataPacket = (byte[])formatter.Deserialize(stream);
                Console.WriteLine(endDataPacket.GetType().ToString());
                foreach(var d in endDataPacket)
                    Console.WriteLine(d);
            }
        }
    }
}
ppps если вы доберетесь от мемори-стримов, до реальных файлов, думаю у вас будет возможность заметить что же там "не так" )))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
shai_hulud
@shai_hulud
Что бы читать и писать примитивные типы достатоточно BinaryReader/BinaryWriter
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы