首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何安全地将`ToBase64String`分块转换?

如何安全地将`ToBase64String`分块转换?
EN

Stack Overflow用户
提问于 2010-11-17 01:59:36
回答 4查看 1.3K关注 0票数 1

这是我当前的代码:

代码语言:javascript
运行
复制
    public void WriteXml(System.Xml.XmlWriter writer)
    {
        CloseConnection();
        using (Stream source = File.Open(DataBaseFileName, FileMode.Open))
        {
            byte[] buffer = new byte[source.Length];
            source.Read(buffer, 0, (int)source.Length);
            writer.WriteString(Convert.ToBase64String(buffer));
        }
        OpenConnection();
    }

这样做的目的是将数据库嵌入到一个XML文件中(该方法属于另一个被序列化的类中的字段的类)。问题是,每当数据库大小约为300MB时,我就会在byte[] buffer = new byte[source.Length];行上得到一个OutOfMemory异常。所以我猜我需要在块上做它。但我不确定这是怎么回事。我认为这些块需要有特定的大小。此外,我认为Convert.ToBase64String会在字符串的末尾添加两个"==“符号,所以我可能每次都要删除它们,直到最后一个。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-17 22:34:51

找到Base64流类:link text

票数 1
EN

Stack Overflow用户

发布于 2010-11-17 05:29:39

Base64将每个6位序列编码为一个字符。(因此名称: 2^6 = 64个可能的字符。)

因此,这样的字符恰好对齐到3个字节(24位)。

换句话说,块的大小必须是3: 3字节、6字节或300字节的倍数……

票数 3
EN

Stack Overflow用户

发布于 2010-11-17 02:04:44

base64将始终填充到4个字符的倍数。我认为只要你切进N*4大小的块,你就没问题。

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

https://stackoverflow.com/questions/4197337

复制
相关文章

相似问题

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