| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Десериализация структуры |
| Автор: PaZ1T1V 9.12.2009, 21:48 | ||||||
| Доброго времени суток, в общем вопрос в следующем: имеется структура
в общем файл состоит из этой структурки сначала и еще кучи байт... в роде с сериализацией, то есть записью в файл все понятно и работает, примеров навалом, а вот как из файла ее обратно в структурку разом запихать, немного не понимаю, то есть пишу так
после этого кода приложение выкидывает экзепшн с текстом The input stream is not a valid binary format. The starting contents (in bytes) are: 42-4D-36-B4-04-00-00-00-00-00-76-00-00-00-28-00-00 ... эмммм.... пишу вот такую строчку для десериализации, точнее хочу удостовериться в том что он что то считал
, но все равно компилятор выкидывает тот же SerializationException что это, точнее нет, почему это так происходит ? Помогите пожалуйста решить данную проблему! советы типа "читай побайтно" не годятся... с уважением. |
| Автор: Heinzz 9.12.2009, 22:13 | ||
откуда куча байт берется, у Вас же только три поля в структуре? |
| Автор: Heinzz 9.12.2009, 22:25 |
| а Вы из точно полностью убираете перед десериализацией? Добавлено через 4 минуты и 39 секунд Не правильно это в файл сериализации дописывать. Если эти данные что Вы дописали неразрывно связаны с сериализуемым объектом, то необходимо писать свой сериализатор для класса который учтет Ваше желание записать что-то еще. |
| Автор: PaZ1T1V 9.12.2009, 22:32 | ||
извините, не понял вопроса.... в общем, файл состоит из байтов, где первые 10 байт это моя структура, затем идет что то остальное, не важно что, какие то данные, вот, мне надо бы сразу вытащить эти первые 10 байт и пихнуть их в структуру, то есть сделать как в сях fread(FileHeader,1,1,sizeof(FILEHEADER)); только под дотнет и на C#, мне сказали так возможно сдеалть только при помощи Desirialize,вот... я и пытаюсь это сделать, но что то не выходит, спросил совета/помощи на форуме.... |
| Автор: Heinzz 9.12.2009, 22:49 | ||
| Перед сериализацией стандартными методами надо лишнее из файла убрать. структура Ваша занимает под 200Байт, совсем не 10. Добавлено через 12 минут и 41 секунду Мне кажется это Вам подойдет, BinaryReader/BinaryWriter - файлы компактные, дописывайте что угодно, главное не забыть последовательность.
|
| Автор: PaZ1T1V 10.12.2009, 06:42 |
а почему 200 байт??? два инта размерностью по 4 байта каждый да шорт который весит 2 байта итого 10 или я не прав ???объясните.. большое спасибо за помощ... |
| Автор: Heinzz 10.12.2009, 09:58 | ||
там есть еще и такая информация а это 137 символов ASCII по байту, вот и выходит:
так что можно сделать свой метод ReadFILEHEADER который через BinaryReader читает Вашу структуру, которая в таком раскладе и займет 10Байт ну и для записи конечно тоже.. |
| Автор: PaZ1T1V 10.12.2009, 10:47 |
| спасибо большое за помошь, все так как вы сказали сделал, все работает, тема закрыта. |