Как обратить произвольный MemoryStream в строку и обратно?

Нужны надежные функции преобразования:

MemoryStreamToString();
StringToMemoryStream();

То что делал я работает не всегда. Для сравнения использовал .ToArray():

var array1 = originalMemoryStream.ToArray();// byte[726]
var array2 = restoredMemoryStream.ToArray();// byte[1333]
bool isEqual = array1.SequenceEqual(array2);//false 

Тут восстановленный стрим не идентичен оригиналу. А бывают ситуации когда идентичен. Нужен способ который не подведет.

Пробовал разные кодировки вставлять в StreamReader/StreamWriter. При Encoding.UTF8 массивы разной длины как и раньше.. При new UTF8Encoding(false), особых изменений нет. При Encoding.ASKII массивы из стримов одинаковой длины(обычно 726), но массивы разные, а строка такой же длины как и массивы. Заметил в массиве из восстановленного стрима много значений "63" - это знаки вопроса в ASKII.


Ответы (1 шт):

Автор решения: John

Найдены подобные вопросы с необходимым ответом:

(1) - https://stackoverflow.com/questions/17801761/converting-stream-to-string-and-back-what-are-we-missing

(2) - https://stackoverflow.com/questions/30517771/memorystream-to-string-and-back-to-memorystream-without-adding-any-bytes-encod

Но сейчас не могу расписать тонкости кодировок и почему все именно так.

→ Ссылка