【问题标题】:convert java bytes to c# bytes (serializing issue )将 java 字节转换为 c# 字节(序列化问题)
【发布时间】:2026-01-13 12:15:01
【问题描述】:

在下文中,我尝试在存储在亚马逊中的 Java 序列化文本文件与 c# 反序列化对象之间进行某种魔术。我的想法是将 Java 中的有符号字节转换为 .net 中的无符号字节!但不幸的是它不起作用!这是有效的想法吗?我怎么能解决这个问题?

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();
}

【问题讨论】:

  • 跨平台序列化???忘了它!字节的符号在这里毫无意义。
  • 具体来说,什么不起作用?您所看到的表明它不起作用。
  • 我不确定使用标准序列化方法的可能性有多大,但我之前通过构建存储系统并使用 RandomAccessFile 类写入文件然后从中读取来手动完成序列化和重建。

标签: c# java android .net serialization


【解决方案1】:

为此使用protobuf,或其他一些跨平台的序列化(xml、json)

【讨论】:

  • 我正要发布这个。 Protobuf 和 Protobuf-net 应该可以很好地满足他的目的。
  • 是的,如果我在拖曳端(Java,C#)中使用这种格式,这是有效的,但我已经使用 Java 序列化没有标准格式的序列化数据!