解码C#中的大型base64文本字符串
本文关键字:base64 文本 字符串 大型 解码 | 更新日期: 2023-09-27 18:25:22
我有一个大型base64编码的文本文件,我需要在C#.Net 中了解
如何将这个大字符串解码为字符串?
我使用这个代码,但它需要很长时间,有时它被冻结并停止响应
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);
}
base-64中的每4个字节正好代表原始有效负载的3个字节,填充为零。因此,如果问题是同时做所有事情,只需考虑4的倍数(例如,4000,或4*1024),然后批量处理数据(或者不管剩下多少,否则)。
然而,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编码10000000个字节,用50ms以base64解码字符串(长度:13333336个字符)。
使用BackgroundWorker来完成工作。