为啥我得到一个零数组
Posted
技术标签:
【中文标题】为啥我得到一个零数组【英文标题】:Why do I get an array of zero为什么我得到一个零数组 【发布时间】:2011-07-19 18:42:42 【问题描述】:myByte - 所有字节都为零
a = "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);
可能是什么原因
【问题讨论】:
【参考方案1】:当我怀疑你打算打电话给 Read
时,你打电话给 Write
。换句话说,您正在 from 写入一个新创建的(因此全为零)数组 to 包含您的序列化数据的MemoryStream
。使用@ 987654324@ 而不是Write
将读取到数组来自流。
虽然调用ToArray
会更简单:
byte[] myByte = memoryStream.ToArray();
【讨论】:
【参考方案2】:您正在将字节数组写入MemoryStream
,而不是相反。将 Write
替换为 read 将解决您的直接问题。
但是MemoryStream
有一个ToArray()
方法,它已经可以满足您的需求。没必要这么复杂。
【讨论】:
【参考方案3】:原因:
-
你没有刷新
binaryFormatter
所以 memoryStream
甚至没有被写入
你到底想做什么!?
如果 (1) 正确,请同时使用 memoryStream
和 binaryFormatter
。
【讨论】:
据我所知,BinaryFormatter 没有 Flush 方法。 我确定你是对的,但我无法像你一样读心,所以我可以看出他的意思是读而不是写。所以我猜想要写memoryStream,还需要一些额外的步骤。以上是关于为啥我得到一个零数组的主要内容,如果未能解决你的问题,请参考以下文章
为啥仅通过更改 SELECT 子句就可以得到零行或具有 NULL 值的行?