在C#中解码大型base64文本字符串

时间:2014-10-03 07:54:29

标签: c# base64

我有C#.Net

需要知道的大型base64编码文本文件

如何将这个大字符串解码为字符串?

我使用此代码但需要很长时间,有时它会被冻结并停止响应

richTextBox2.Text = Base64Decode(richTextBox1.Text); // I Past text at richTextBox1

我也试试这个

var bytes = Convert.FromBase64String(richTextBox1.Text);
var text = System.Text.Encoding.Unicode.GetString(bytes, 0, bytes.Length);
richTextBox2.Text = text.ToString();

有许多类似的问题,但我发现没有人谈论大文本文件

编辑:

public static string Base64Decode(string base64EncodedData)
    {
        var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
        return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
    }

2 个答案:

答案 0 :(得分:3)

base-64中的每4个字节恰好代表原始有效负载的3个字节,填充为零。因此,如果问题是同时执行所有操作,只需考虑4的倍数(例如,4千,或4 * 1024),并分批处理数据(或者剩下多少,否则)。 / p>

然而,1MB 大量数据;我不希望这是问题所在。从以下内容:

    var data = new byte[10000000];
    var watch = Stopwatch.StartNew();
    string s = Convert.ToBase64String(data);
    watch.Stop();
    Console.WriteLine(watch.ElapsedMilliseconds);
    watch.Reset();
    watch.Start();
    byte[] b = Convert.FromBase64String(s);
    watch.Stop();
    Console.WriteLine(watch.ElapsedMilliseconds);

我得到30ms到base-64编码10,000,000字节,50ms到base-64解码字符串(长度:13,333,336个字符)。

答案 1 :(得分:-4)

使用BackgroundWorker完成工作。