C# 二进制流';238';不包含有效的BinaryHeader
我正在使用以下代码将C# 二进制流';238';不包含有效的BinaryHeader,c#,memory,bytearray,memorystream,binaryformatter,C#,Memory,Bytearray,Memorystream,Binaryformatter,我正在使用以下代码将ByteArray转换为Object: private static Object ByteArrayToObject(byte[] arrBytes) { MemoryStream memStream = new MemoryStream(); BinaryFormatter binForm = new BinaryFormatter(); memStream.Write(arrBytes, 0, arrBytes.Length); memS
ByteArray转换为Object
:
private static Object ByteArrayToObject(byte[] arrBytes)
{
MemoryStream memStream = new MemoryStream();
BinaryFormatter binForm = new BinaryFormatter();
memStream.Write(arrBytes, 0, arrBytes.Length);
memStream.Seek(0, SeekOrigin.Begin);
Object obj = (Object)binForm.Deserialize(memStream);
return obj;
}
突然间,它抛出了错误
二进制流“238”不包含有效的BinaryHeader。可能的
原因是之间的流或对象版本更改无效
序列化和反序列化
我必须做些什么才能摆脱这个错误?这个字节数组是从哪里来的?如果不是使用
BinaryFormatter
序列化对象的结果,则可以解释问题。输入字节数组是加密的结果。我试着加密一个类的对象,你需要在反序列化它之前解密它,就这么简单。(就我个人而言,无论如何我不会使用.NET二进制序列化,但那是另一回事。)解密也给了我一个字节数组,我必须从这个数组中取回对象,所以你在解密的字节数组中调用这个代码。(或者更好,跳过编写部分,用新内存流(arrBytes)
创建流,但基本上还是一样的…)如果这对您不起作用,请提供一个简短但完整的程序来说明问题-可能是解密失败了。