如何在vba中编写实现base64编码的函数?

base64编码是将一个8位字节序列拆散为6位的片段,并为每个6位的片段分配一个字符。

6位字节序列转化为对应的10进制值,然后根据下表找到对应的字符。

由于二进制序列流有时不能正好平均分成6位的块,在这种情况下,就在二进制序列末尾填充位数,使二进制序列的长度成为24的倍数(6和8的最小公倍数)。对已填充的二进制串进行编码时,任何完全填充(不包含原始数据中的位)的6位组都由特殊的第65个符号“=”表示。如果6位组是部分填充的,就将填充位设置为0。

比如数据”a:aa”的填充二进制位为“011000 010011 101001 100001 011000 01xxxx xxxxxx xxxxxx”

其中01xxxx是部分填充的,把填充位都设置为0,也就是变成了010000,最后2个6位组是完全填充的,用符号”=”编码,从而得出”a:aa”的base64编码为YTphYQ==。

基于以上的原理分析,可以使用如下的函数对任意的字符串进行base64编码。

如果是一般的非中文字符,我们可以使用如下的代码进行Base64编码:

当涉及中文字符时,用以上的代码进行编码获得的是gb2312的Base64编码,由于网站经常使用的是utf-8,为此还需要通过以下的代码把unicode字符转换为utf-8编码,以免出现乱码。





       

发表评论