读取从Java序列化为C#的BigInteger

时间:2010-12-10 16:46:27

标签: c# java serialization

Java程序使用BigInteger中的writeObject方法将ObjectOutputStream序列化到文件中。

我可以在C#中反序列化吗?我尝试使用java.math的{​​{1}}和java.io类,但我得到了一个例外:

  

InvalidClassException   该类与cl = java.lang.Number的持久对象的类不匹配:__SUID = -8742448824652078965,getSUID(cl)= 3166984097235214156

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您是否可以控制Java的序列化步骤?

如果是这样,我建议将字节数组序列化为二进制或base64,并从序列化结构中读取字节数组。

然后您可以将字节数组传递给System.Numerics.BigInteger构造函数。

答案 1 :(得分:1)

如果你不介意丑陋的黑客攻击:我会说最简单的(尽管不是最有效的)方法就是在Java端将其写成ASCII字符串,并在C#端解析该字符串,而不是使用二进制de /序列化。

答案 2 :(得分:0)

我建议你不要使用序列化,因为BigInteger的两个版本不兼容 - 它们有不同的版本ID。

您应该以其他方式编写对象,可能使用BigInteger.toByteArray

中的字节数组

阅读此this question about serialization也可能对您有所了解