开发者

Read a BigInteger serialized from Java into C#

I have a BigInteger serialized to a file by a Java program using the writeObject method from ObjectOutputStream.

Can I deserialize it in C#? I tried using the java.math and java.io classes of vjslib, but I get an exception:

InvalidClassExce开发者_C百科ption the class does not match the class of the persisted object for cl = java.lang.Number : __SUID = -8742448824652078965, getSUID(cl) = 3166984097235214156

Any ideas?


Do you have control over the serialization step from Java?

If so, I would suggest serializing a byte array, either as binary, or base64, and reading the byte array from the serialized structure.

Then you can pass the byte array to the System.Numerics.BigInteger constructor.


If you don't mind ugly hacks: I'd say the easiest (albeit not most efficient) way would be to just write it out as an ASCII String on the Java side, and parse that string on the C# side, instead of using binary de/serialization.


I suggest you don't use serialization for this, since the two versions of BigInteger are not compatible - they have different version ids.

You should write the object out in some other way, probably using the byte array from BigInteger.toByteArray

Reading this this question about serialization might also be insightful for you

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜