я попробовал (модифицированный и упрощенный) MSDN Exemple базовой сериализации в http://msdn.microsoft.com/en-us/library/4abbf6k0.aspxC#: Сериализация простого класса
//the class :
[Serializable]
public class MyObject {
public byte n1 = 0;
public byte n2 = 0;
}
//The code
MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();
Итак, я ожидал найти 2 байта: 0x01 0x18 в MyFile.bin
но это не нравится, у меня есть этот результат:
Почему все это. и как я могу делать то, что хотел бы.
Целью данного теста является сериализация более Complexe структуру для того, чтобы сохранить их в двоичный файл
'BinaryFormatter' добавить некоторые метаданные о структуре. Но даже если вы пренебрегаете им - 'int' имеет по 4 байта каждый, почему вы ожидаете увидеть 2 байта, имеющих две 4-байтовые структуры Int32? –
Вы должны использовать оператор 'using' для потока, чтобы убедиться, что ресурсы очищены в случае исключения. 'Close()' недостаточно безопасен, потому что он может упасть, прежде чем он попадет в этот оператор. –
Извините, я не могу исправить, прежде чем отправлять двух членов класса MyObject - это байты (но я не знаю, как отредактировать мой вопрос) – lolonapoli