如何将MemoryStream转换为string,以及逆过程(将string转换为MemoryStream)?

时间:2021-06-16 19:02:44
要求不论MemoryStream保存的是什么内容都不会在转换过程中丢失信息

14 个解决方案

#1


MemoryStream m;
///...
StringBuilder sb = new StringBuilder()
StringWriter sw = new StringWriter (sb);
m.WriteTo(sw);
sw.Close();
string s = sb.ToString();

or

string s = System.Text.Encoding.Default.GetString(m.ToArray());

#2


what's in the stream?

MemoryStream ms = new MemoryStream();

byte[] bs = ms.ToArray();

String s = System.Text.Encoding.UTF8.GetString(bs);

byte[] bs2 = System.Text.Encoding.UTF8.GetBytes(s);

MemoryStream ms2 = new MemoryStream(bs2);

#3


byte []a=MemoryStream .toarray()
string s=System.text.encoding.default.getstring(a);

#4


to 楼上的几位:
我用
Encoding
UnicodeEncoding
都试过了,有些情况是可以的,但在有些情况下会丢失信息

#5


string s="陈村sdklfjalskdfHélène Rollès";
byte[] bs=System.Text.Encoding.Default.GetBytes(s);
MemoryStream ms=new MemoryStream(bs);
byte[] bs2=ms.ToArray();
string s1=System.Text.Encoding.Default.GetString(bs2);
Response.Write(s1);
这样转换不会出错。
不知道你里面要转换什么东东。

#6


帮你顶一下

#7


我要转化的memorystream是序列化dataset而得来的,里面包含的是dataset的全部信息
转换几十条记录的表没有问题,但转换几千条记录的大表时则丢失了一些信息而导致转换失败

#8


up

#9


不会吧,我的DataSet几十W条记录的都好正常啊。

#10


使用Base64编码解决该问题,方便,快捷

代码如下:

public static string GetStreamString(System.IO.MemoryStream ms)
{
byte[] cache = new System.IO.BinaryReader(ms).ReadBytes(ms.Length);
return Convert.ToBase64String(cache,0,cache.Length);
}

public static string GetStringStream(string mss)
{
return Convert.FromBase64String(mss);
}

#11


Stream stream=new MemoryStream(); 
stream.Position = 0; 
StreamReader sr = new StreamReader(stream); 
string str = sr.ReadToEnd(); 


#12


string cryptString = "";
Stream outStream = new MemoryStream();
StreamWriter sw = new StreamWriter(outStream);
sw.Write(cryptString);

#13


我试了所有的方法,只有zealic() 的方法可以,其他的都不行。我是把位图图像存在MemoryStream里面的。用其他方法转化成String的时候总是只有几个字符

#14


mark

#1


MemoryStream m;
///...
StringBuilder sb = new StringBuilder()
StringWriter sw = new StringWriter (sb);
m.WriteTo(sw);
sw.Close();
string s = sb.ToString();

or

string s = System.Text.Encoding.Default.GetString(m.ToArray());

#2


what's in the stream?

MemoryStream ms = new MemoryStream();

byte[] bs = ms.ToArray();

String s = System.Text.Encoding.UTF8.GetString(bs);

byte[] bs2 = System.Text.Encoding.UTF8.GetBytes(s);

MemoryStream ms2 = new MemoryStream(bs2);

#3


byte []a=MemoryStream .toarray()
string s=System.text.encoding.default.getstring(a);

#4


to 楼上的几位:
我用
Encoding
UnicodeEncoding
都试过了,有些情况是可以的,但在有些情况下会丢失信息

#5


string s="陈村sdklfjalskdfHélène Rollès";
byte[] bs=System.Text.Encoding.Default.GetBytes(s);
MemoryStream ms=new MemoryStream(bs);
byte[] bs2=ms.ToArray();
string s1=System.Text.Encoding.Default.GetString(bs2);
Response.Write(s1);
这样转换不会出错。
不知道你里面要转换什么东东。

#6


帮你顶一下

#7


我要转化的memorystream是序列化dataset而得来的,里面包含的是dataset的全部信息
转换几十条记录的表没有问题,但转换几千条记录的大表时则丢失了一些信息而导致转换失败

#8


up

#9


不会吧,我的DataSet几十W条记录的都好正常啊。

#10


使用Base64编码解决该问题,方便,快捷

代码如下:

public static string GetStreamString(System.IO.MemoryStream ms)
{
byte[] cache = new System.IO.BinaryReader(ms).ReadBytes(ms.Length);
return Convert.ToBase64String(cache,0,cache.Length);
}

public static string GetStringStream(string mss)
{
return Convert.FromBase64String(mss);
}

#11


Stream stream=new MemoryStream(); 
stream.Position = 0; 
StreamReader sr = new StreamReader(stream); 
string str = sr.ReadToEnd(); 


#12


string cryptString = "";
Stream outStream = new MemoryStream();
StreamWriter sw = new StreamWriter(outStream);
sw.Write(cryptString);

#13


我试了所有的方法,只有zealic() 的方法可以,其他的都不行。我是把位图图像存在MemoryStream里面的。用其他方法转化成String的时候总是只有几个字符

#14


mark