2011-07-19 240 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,需要一些額外的步驟。 –