是否可以以块的形式对文件进行base64编码?

ror*_*itt 15 base64

我试图base64编码一个巨大的输入文件,最后得到一个文本输出文件,我试图找出是否有可能逐位编码输入文件,或者我是否需要编码整个事情一下子.

这将在AS/400(iSeries)上完成,如果这有任何区别.我正在使用我自己的base64编码例程(用RPG编写),它运行良好,如果不是大小限制的情况,那就没问题了.

mjv*_*mjv 30

它不可能逐位,一次只能3个字节,或者3个字节的倍数就可以!

换句话说,如果您将输入文件拆分为"块",其大小是3个字节的倍数,则可以单独对块进行编码,并将生成的B64编码块拼凑在一起(在相应的orde中)注意,最后一个chuink的大小不一定是3个字节的倍数,具体取决于其大小的模3值,其对应的B64值将有一些这些填充字符(通常是等号)但是没关系因为这将是唯一具有(并且需要)这种填充的部分.

在解码方向上,除了需要将B64编码数据以4个字节的倍数分割之外,它是相同的想法.根据需要并行/单独解码它们,并通过将解码的部分附加在一起(再次以相同的顺序)重新分割原始数据.

例:

"文件"内容= "Never argue with the data." (Jimmy Neutron).
直接编码=Ik5ldmVyIGFyZ3VlIHdpdGggdGhlIGRhdGEuIiAoSmltbXkgTmV1dHJvbik=

现在,在块中:
"Never argue     - >     Ik5ldmVyIGFyZ3Vl
with the         - >        IHdpdGggdGhl
data." (Jimmy Neutron) - >IGRhdGEuIiAoSmltbXkgTmV1dHJvbik=

正如您在该顺序中看到的那样,3个编码块的数量与为整个文件生成的代码相同.

类似地进行解码,具有任意的chuncked大小,只要它们是4个字节的倍数.绝对不需要在用于编码的大小之间具有任何类型的对应关系.(尽管每个方向标准化为一个单一尺寸(比如300和400)可能会使事情更加统一和易于管理.