为什么我得到一个0的数组

本文关键字:一个 数组 为什么 | 更新日期: 2023-09-27 18:02:53

myByte -所有字节都为零

a =" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =="

    var memoryStream = new MemoryStream();
    var binaryFormatter = new BinaryFormatter();
    binaryFormatter.Serialize(memoryStream, m_workspace.ListPlatforms.ToArray());
    myByte = new byte[memoryStream.Length];
    memoryStream.Seek(0, SeekOrigin.Begin);
    memoryStream.Write(myByte, 0, myByte.Length);
    string a = System.Convert.ToBase64String(myByte);

原因是什么

为什么我得到一个0的数组

你打电话给Write时,我怀疑你想打电话给Read。换句话说,您正在将一个新创建的(因此全零)数组写入包含序列化数据的MemoryStream。使用Read代替Write将从流中读取数组

调用ToArray会更简单:

byte[] myByte = memoryStream.ToArray();

您正在将字节数组写入MemoryStream,而不是反过来。将Write替换为read将解决您当前的问题。

但是MemoryStream有一个ToArray()方法,它已经做了你想要的。没必要用这么复杂的方法。

原因:

  1. 您没有冲洗binaryFormatter,因此memoryStream甚至没有写入
  2. 你到底想干什么!?

如果(1)是正确的,在memoryStreambinaryFormatter周围使用