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);
可能是什么原因
答案 0 :(得分:10)
当我怀疑您打算致电Write
时,您正在致电Read
。换句话说,您正在将从新创建的(并因此为完整的零)数组写入 MemoryStream
,其中包含您的序列化数据。使用Read
代替Write
会将从流中读入 。
尽管呼叫ToArray
会更简单:
byte[] myByte = memoryStream.ToArray();
答案 1 :(得分:1)
您正在将字节数组写入MemoryStream
,而不是相反。用read替换Write
可以解决您的问题。
但是MemoryStream
有一个ToArray()
方法,它已经做了你想要的。不需要以这么复杂的方式去做。
答案 2 :(得分:1)
原因:
binaryFormatter
所以memoryStream
甚至没有写完如果(1)是正确的,请在memoryStream
和binaryFormatter
周围使用。