2010-12-10 61 views
0

我有一个BigInteger通过Java程序使用writeObject方法从ObjectOutputStream序列化到文件。阅读BigInteger从Java序列化到C#

我可以在C#中反序列化它吗?我试着用的vjslibjava.mathjava.io类,但我得到一个异常:

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

任何想法?

+0

你是怎样尝试使用vjslib反序列化呢?请发表一个例子 – curtisk 2010-12-10 16:50:01

回答

1

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

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

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

1

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

0

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

你应该写对象出一些其他的方式,可能使用从BigInteger.toByteArray

字节数组阅读本this question about serialization也可能是很有见地的,你