也许这个名为WebClient的类没有责任将数据uri转换成byte [],但我试过
var client = new WebClient();
var result = client.DownloadData(uri);
给出一个看起来像
的uri数据:图像/ GIF; BASE64,R0lGODlhAQABAIAAAAAAAP /// yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
并得到一个WebException说
无法识别URI前缀。
如何以最简单的方式解码数据uri?
使用
解码这样的uri的问题 Convert.FromBase64String(str)
是我需要提取部分
R0lGODlhAQABAIAAAAAAAP /// yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
首先,这当然是一项微不足道的任务。
然而,当文件变大时,这将需要我分配大量内存以获得几乎相等的字符串。 Convert.FromBase64String
没有偏移参数是个谜。
如果我不想要额外的分配,我是否需要自己完成整个base64解码?
答案 0 :(得分:0)
afaik,您可以使用特定的Encoding
基类来转换字符串的一部分。 (而不是一次性转换整个事物)
如果你正在处理网络内容,我想你想要UTF8
这些内容中的某些内容: (这个例子不是完全你想做什么)
string completeMessage = "";
int byteStepSize = 4;
for(int i=0; i < byteStepSize; i+= byteStepSize)
{
string subStr = str.SubString(i, i+byteStepSize);
completeMessage += encoding.UTF8.GetString(Convert.FromBase64String(subStr));
}
您可以(理论上)以这种方式通过base64编码的字符串进行流式处理,从而无需一次性完全分配它。