如何将blob数据转换为字符串?

我正在使用以下函数将二进制数据转换为文本

public string BinaryToText(byte[] data) { MemoryStream stream = new MemoryStream(data); StreamReader reader = new StreamReader(stream, encoding.UTF8); string text = reader.ReadTod(); return text; } 

但是显示了30Mb数据的System.OutOfMemoryException 。 如何解决这个问题并使用这个或更好的方法转换大于100Mb的数据?

试试这个:

 public string BinaryToText(byte[] data) { return Encoding.UTF8.GetString(data); } 

它会消耗更少的内存。 如果它仍然耗尽内存,则需要以块的forms读取它 – 但是如何使用数据将确定是否可能。 你对返回的字符串做了什么?

此外,我将重申我之前的问题:输入数据是否真的是 UTF8数据?

如果您可以处理作为多个字符串返回的数据,您可以执行以下操作:

 public IEnumerable BinaryToStrings(byte[] data, int maxStringLength) { var buffer = new char[maxStringLength]; using (MemoryStream stream = new MemoryStream(data)) using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { while (true) { int count = reader.Read(buffer, 0, maxStringLength); if (count == 0) { break; } yield return new string(buffer, 0, count); } } } 

然后你可以在foreach循环中调用它,如下所示:

 foreach (string chunk in BinaryToStrings(data, 1024)) { // Do something with 'chunk'... }