C# 将从Java序列化为C的BigInteger读取#
我使用C# 将从Java序列化为C的BigInteger读取#,c#,java,serialization,C#,Java,Serialization,我使用ObjectOutputStream中的writeObject方法将一个biginger序列化为一个文件 我可以用C#反序列化它吗?我尝试使用vjslib的java.math和java.io类,但我遇到了一个异常: InvalidClassException 该类与cl=java.lang.Number的持久化对象的类不匹配:uu SUID=-87424488246522078965,getSUID(cl)=3166984097235214156 有什么想法吗?您可以从Java控制序列化步
ObjectOutputStream
中的writeObject
方法将一个biginger
序列化为一个文件
我可以用C#反序列化它吗?我尝试使用vjslib
的java.math
和java.io
类,但我遇到了一个异常:
InvalidClassException
该类与cl=java.lang.Number的持久化对象的类不匹配:uu SUID=-87424488246522078965,getSUID(cl)=3166984097235214156
有什么想法吗?您可以从Java控制序列化步骤吗 如果是这样,我建议将字节数组序列化为二进制或base64,并从序列化结构中读取字节数组
然后您可以将字节数组传递给
System.Numerics.BigInteger
构造函数。如果您不介意丑陋的黑客攻击:我认为最简单(尽管不是最有效)的方法是在Java端将其作为ASCII字符串写入,然后在C端解析该字符串,不要使用二进制反序列化。我建议不要为此使用序列化,因为biginger
的两个版本不兼容-它们有不同的版本ID
您应该以其他方式写出对象,可能使用biginger.toByteArray
阅读这篇文章可能对您也很有启发您是如何尝试使用vjslib对其进行反序列化的?请举个例子