为什么我得到一个零数组

时间:2011-07-19 18:42:43

标签: c# c#-2.0 bytearray memorystream

myByte - 所有字节都为零

a =“AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ==”

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

可能是什么原因

3 个答案:

答案 0 :(得分:10)

当我怀疑您打算致电Write时,您正在致电Read。换句话说,您正在将新创建的(并因此为完整的零)数组写入 MemoryStream,其中包含您的序列化数据。使用Read代替Write会将流中读入

尽管呼叫ToArray会更简单:

byte[] myByte = memoryStream.ToArray();

答案 1 :(得分:1)

您正在将字节数组写入MemoryStream,而不是相反。用read替换Write可以解决您的问题。

但是MemoryStream有一个ToArray()方法,它已经做了你想要的。不需要以这么复杂的方式去做。

答案 2 :(得分:1)

原因:

  1. 您没有刷新binaryFormatter所以memoryStream甚至没有写完
  2. 你还想做什么!?
  3. 如果(1)是正确的,请在memoryStreambinaryFormatter周围使用。