簡體   English   中英

讀取從Java序列化為C#的BigInteger

[英]Read a BigInteger serialized from Java into C#

我有一個BigInteger由Java程序使用ObjectOutputStreamwriteObject方法序列化為文件。

我可以在C#中反序列化嗎? 我嘗試使用vjslibjava.mathjava.io類,但是我得到了一個異常:

InvalidClassException該類與cl = java.lang.Number不匹配的持久化對象的類:__SUID = -8742448824652078965,getSUID(cl)= 316698409723521414

有任何想法嗎?

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

如果是這樣,我建議將字節數組(二進制或base64)序列化,並從序列化結構中讀取字節數組。

然后,您可以將字節數組傳遞給System.Numerics.BigInteger構造函數。

如果你不介意丑陋的黑客:我會說最簡單的(盡管不是最有效的)方法是在Java端將其寫成ASCII字符串,並在C#端解析該字符串,而不是使用二進制/序列化。

我建議您不要為此使用序列化,因為BigInteger的兩個版本不兼容-它們具有不同的版本ID。

您應該以其他方式編寫對象,可能使用BigInteger.toByteArray的字節數組

閱讀此有關序列化的問題可能對您也很有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM