为什么我得到一个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);
原因是什么
你打电话给 调用Write
时,我怀疑你想打电话给Read
。换句话说,您正在将从一个新创建的(因此全零)数组写入包含序列化数据的MemoryStream
。使用Read
代替Write
将从流中读取到数组。ToArray
会更简单:byte[] myByte = memoryStream.ToArray();
您正在将字节数组写入MemoryStream
,而不是反过来。将Write
替换为read将解决您当前的问题。
但是MemoryStream
有一个ToArray()
方法,它已经做了你想要的。没必要用这么复杂的方法。
原因:
- 您没有冲洗
binaryFormatter
,因此memoryStream
甚至没有写入 你到底想干什么!?
如果(1)是正确的,在memoryStream
和binaryFormatter
周围使用