我试图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)可能会使事情更加统一和易于管理.
| 归档时间: |
|
| 查看次数: |
16456 次 |
| 最近记录: |