Почему я получаю массив с нулем - PullRequest
0 голосов
/ 19 июля 2011

myByte - все байты равны нулю

a = "АААААААААААААААААААААААААААААААААААААААААААААААА =="

    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);

в чем причина

Ответы [ 3 ]

10 голосов
/ 19 июля 2011

Вы звоните Write, когда я подозреваю, что вы хотели позвонить Read.Другими словами, вы пишете из недавно созданного (и, следовательно, с нулями) массива в MemoryStream, в котором есть ваши сериализованные данные. Использование Readвместо Write будет читать в массив из потока.

Хотя было бы проще вызвать ToArray, хотя:

byte[] myByte = memoryStream.ToArray();
1 голос
/ 19 июля 2011

Причины:

  1. вы не сбросили binaryFormatter так что memoryStream даже не было написано
  2. что вы пытаетесь сделать в любом случае!?

Если (1) правильно, поместите с помощью memoryStream и binaryFormatter.

1 голос
/ 19 июля 2011

Вы записываете байтовый массив в MemoryStream, а не наоборот.Замена Write на read решит вашу непосредственную проблему.

Но MemoryStream имеет метод ToArray(), который уже делает то, что вы хотите.Не нужно делать это таким сложным способом.

...