C# 二进制序列化无效,标头无效
我得到了以下内容,而不是comlex代码,无论如何,我在反序列化时得到了一个异常。 例外情况是:二进制流“0”不包含有效的BinaryHeader。可能的原因是序列化和反序列化之间的无效流或对象版本更改 但我不明白我的代码有什么问题C# 二进制序列化无效,标头无效,c#,serialization,binaryformatter,C#,Serialization,Binaryformatter,我得到了以下内容,而不是comlex代码,无论如何,我在反序列化时得到了一个异常。 例外情况是:二进制流“0”不包含有效的BinaryHeader。可能的原因是序列化和反序列化之间的无效流或对象版本更改 但我不明白我的代码有什么问题 using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization; using System.IO; namespace Server { [S
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
using System.IO;
namespace Server
{
[Serializable]
class testclass
{
int a;
int b;
int c;
public testclass()
{
a = 1;
b = 2;
c = 3000;
}
}
class Program
{
static void Main(string[] args)
{
testclass test = new testclass();
IFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream(new byte[512],0,512,true,true);
bf.Serialize(ms,test);
testclass detest=(testclass)bf.Deserialize(ms);
Console.ReadLine();
}
}
}
执行此操作时,流位于数据的末尾
bf.Serialize(ms,test);
在尝试之前,请将其倒带以开始
testclass detest=(testclass)bf.Deserialize(ms);
在流上使用
Position=0
执行此操作。执行此操作时,流位于数据的末尾
bf.Serialize(ms,test);
在尝试之前,请将其倒带以开始
testclass detest=(testclass)bf.Deserialize(ms);
使用流上的
Position=0
来执行此操作。您必须先倒回流的开头,然后才能反序列化或读取流示例:ms.Seek(0,请参见korigin.Begin)
您必须先倒带到流的开头,然后才能反序列化或读取流示例:ms.Seek(0,SeekOrigin.Begin)
好的,我不仅要倒流,而且我的消息必须从0开始,但我仍然有一些问题,我会用更多的代码更新我的问题好的,但是如果是新问题,请发布一个新问题,并单击回答,以解决您的问题。好的,上一个问题是关于不知道我自己的协议,所以谢谢你们两位指出问题OK我不仅要倒流,而且我的消息必须从0开始,但我仍然有一些问题,我会用更多的代码更新我的问题OK,但如果是新问题,请发布新问题,然后单击解决问题的答案。好的,最后一个问题是关于不了解我自己的协议,因此感谢你们两位指出问题