首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大文件/字符串的Convert.FromBase64String错误

大文件/字符串的Convert.FromBase64String错误
EN

Stack Overflow用户
提问于 2014-08-28 19:24:45
回答 1查看 1.3K关注 0票数 0

我在使用FormatException时使用Convert.FromBase64String

我已经检查了x.length % 4 == 0,否则我就垫了。

我已经确保没有无效的字符。

奇怪的是,当我将其复制并粘贴回即时窗口或外部转换器时,一切正常。

在搜索上面的点时,我发现这种行为的一个常见原因是隐藏的换行符/n。在该示例中,当代码试图解析值时,由于存在无效字符,它失败了。然而,通过复制到记事本,隐形字符被移除,并从那里正常工作。这个问题看起来非常类似于上面的内容;但是,我已经验证了我的值没有隐藏的断行字符。

您能想到复制和粘贴会起作用的其他原因吗,但是处理代码中的数据就不行了?我的想法是,一定有另一个角色,或者是一些我不容易看到的东西。

供参考,产生这一问题的一行是:

代码语言:javascript
复制
data.Data = Convert.FromBase64String(report.Content.ContentValue);

Report.Content.ContentValue值的截断版本为"JVBERi0xLjMNCjEgMCBvYmoNCjw8IA0KL0xlbmd0aCA1MzIzDQovRmlsdGVyIC9GbGF0ZURlY29kZQ0‌​KPj4NCnN0cmVhbQ0KWIXtvQdgHEmWJSYvbcp7f0r1Stfg ... trimmed ... g0KPDwgDQovU2l6ZSAxMDcNCi9JbmZvIDEwNiAwIFINCi9Sb290IDUyIDAgUg0KPj4NCnN0YXJ0eHJlZ‌​g0KMzM2MDU4OQ0KJSVFT0Y="

任何想法都会有帮助,谢谢。

如果我将问题(x)中的值复制到剪贴板,并将以下内容放入即时窗口,那么更新也是很有趣的

代码语言:javascript
复制
?x == "JVBERi0xLjMNCjEgMCBvYmoNCjw8IA0KL0xlbmd0aCA1MzIzDQovRmlsdGVyIC9GbGF0ZURlY29kZQ0‌​KPj4NCnN0cmVhbQ0KWIXtvQdgHEmWJSYvbcp7f0r1Stfg ... trimmed ... g0KPDwgDQovU2l6ZSAxMDcNCi9JbmZvIDEwNiAwIFINCi9Sb290IDUyIDAgUg0KPj4NCnN0YXJ0eHJlZ‌​g0KMzM2MDU4OQ0KJSVFT0Y="

其中JVBER...部件是复制到剪贴板上的x的值。

立即窗口返回FALSE

这告诉我,复制的行为正在改变字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-29 16:09:03

上述问题似乎与文件大小问题有关。

如上所述,Convert.FromBase64String(report.Content.ContentValue);最初没有工作;但是,通过将report.Content.ContentValue分割成四个较小的部分,调整填充,然后将结果转换为单个数据数组,我就能够产生预期的结果。

代码语言:javascript
复制
foreach (string partialInput in splitInputArray) 
{                                                 
        string paddedPartialInput = partialInput;
        int lengthAdjustment = partialInput.Length % 4; 

        if (lengthAdjustment > 0) //do we need to fix the padding
            paddedPartialInput = paddedPartialInput.PadRight(paddedPartialInput.Length + (4- lengthAdjustment), '=');                        

        repairedOutput = MergeByteArrays(repairedOutput, Convert.FromBase64String(paddedPartialInput));
}

我仍然不明白为什么Convert.FromBase64String(...)不只是处理完整的输入;但是,如果您发现自己遇到了大文件和Convert.FromBase64String(...)的问题,那么您应该尝试一下这个解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25556517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档