2010-12-10 33 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也可能是很有見地的,你