为啥我得到一个零数组

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) 正确,请同时使用 memoryStreambinaryFormatter

【讨论】:

据我所知,BinaryFormatter 没有 Flush 方法。 我确定你是对的,但我无法像你一样读心,所以我可以看出他的意思是读而不是写。所以我猜想要写memoryStream,还需要一些额外的步骤。

以上是关于为啥我得到一个零数组的主要内容,如果未能解决你的问题,请参考以下文章

为啥 int 数组在 C++ 中未初始化为零?

为啥仅通过更改 SELECT 子句就可以得到零行或具有 NULL 值的行?

为啥superview返回零? [复制]

为啥我不能从数组中得到正确的日期?

sklearn naive bayes MultinomialNB:尽管我有 2 个类,为啥我只得到一个带系数的数组?

为啥我没有得到数组超出范围错误? [复制]