2011-07-19 44 views
0

myByte阵列 - 所有字节都是零为什么我得到零

一个= “AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ==”

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

这可能是

回答

10

你调用Write时的原因我怀疑你打算打电话给Read。换句话说,你写新创建(因此全的,零)阵列这在你的序列化数据的MemoryStream。使用Read代替Write会读数组流。

这将是简单的调用ToArray但:

byte[] myByte = memoryStream.ToArray(); 
1

你写字节数组到MemoryStream,而不是反过来。用读取替换Write将解决您的直接问题。

MemoryStream有一个ToArray()方法,它已经做了你想要的。无需以如此复杂的方式来完成。

1

原因:

  1. 你没有刷新binaryFormatter所以memoryStream甚至没有得到书面
  2. 什么是你想无论如何做!?

如果(1)是正确的,请在memoryStreambinaryFormatter附近使用。

+0

据我所知,BinaryFormatter没有Flush方法。 –

+0

我相信你是对的,但我不能像你一样阅读头脑,所以我可以看到他的意思是阅读而不是写。所以我猜想,为了写入memoryStream,需要一些额外的步骤。 –