2013-02-27 68 views
1

以下我试图让Java序列化文本文件存储在亚马逊与c#反序列化对象之间进行某种形式的比较。我的想法是将Java中的带符号字节转换为.net中的无符号字节!但不幸的是它不工作!它有效的想法?我怎么能解决这个问题?将java字节转换为c#字节(序列化问题)

using (Stream amazonStream = getObjRespone.ResponseStream) 
{ 
    List<sbyte> buffer = new List<sbyte>(); 
    int onebyte = 0; 
    while (onebyte != -1) 
    { 
     onebyte = amazonStream.ReadByte(); 
     if (onebyte != -1) 
      buffer.Add((sbyte)onebyte); 
    } 
    byte[] dest = Array.ConvertAll(buffer.ToArray(), item => (byte)item); 
    Stream stream = new MemoryStream(dest); 
    object obj= binaryFormatter.Deserialize(stream); 
    //byte[] b= (byte[]) buf.ToArray(); 
} 
+0

跨平台系列化???算了吧!字节的符号在这里毫无意义。 – 2013-02-27 14:58:26

+0

具体来说,哪些不起作用?你看到的是什么,表明它不起作用。 – 2013-02-27 15:00:48

+0

我不确定这与标准的序列化方法有多可能,但我已经完成了手工序列化,然后构建存储系统并使用RandomAccessFile类写入文件,然后从中读取并重建。 – 2013-02-27 15:00:49

回答

2

使用protobuf用于此目的,或者其它一些跨平台serilization(XML,JSON)

+1

我正要发布这个。 Protobuf和Protobuf-net应该很好地满足他的目的。 – 2013-02-27 15:00:18

+0

是的这是有效的,如果我使用这种格式(Java,C#),但我已经使用Java序列化没有标准格式的序列化数据! – 2013-02-28 06:31:08