我正在使用TcpStream,并将数据复制到MemoryStream中。现在我想将其转换为文本(UTF-8编码)。我尝试了各种方法并进行了flush()操作,但无法解决问题。我尝试与StreamReader结合使用,但没有成功(我得到一个空字符串)。
只需从 MemoryStream
获取数据并对其进行解码:
string decoded = Encoding.UTF8.GetString(theMemoryStream.ToArray());
你可能会得到一个空字符串,因为你从MemoryStream
中读取时没有重置它的位置。无论当前位置在哪里,ToArray
方法都会获取所有数据。
如果在将其放入MemoryStream
之前它已经是一个字节数组,那么你可以直接使用它。
using(MemoryStream ms = GetStream())
using(StreamReader reader = new StreamReader(ms))
{
ms.Position = 0;
Console.WriteLine(reader.ReadToEnd());
}