16 q 33 h 50 y
在vb中可以简单的将其保存为一个常量:
private const base64table =
"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/="
编码过程是这样的,第一个字符通过右移2位获得第一个目标字符的base64表位置,根据
这个数值取到表上相应的字符,就是第一个目标字符
,然后将第一个字符左移6位加上第二个字符右移4位,即获得第二个目标字符,再将第二
个字符左移4位加上第三个字符右移6位,获得第三个
目标字符,最后取第三个字符的右6位即获得第四个目标字符.
例如我们取一个简单的字符串"test..."
将其用sourcebyte = strconv(sourcetext, vbfromunicode)转换后获得二进制数组:
t e s t ...
84 69 83 84 ...
01010100 01000101 01010011 01010100 ...
01010100/01000101/01010011/01010100
01010100010001010101001101010100
转换后:
01010100010001010101001101010100
010101/000100/010101/010011/010101/00
010101 000100 010101 010011 010101 00....
21 4 21 19 21 ...
v e v t v ...
最后得到的就是"vevtv..."
对于第一个目标字符我们可以这样做:
(sourcebyte(1) and 252)/4
第二个:
(sourcebyte(1) and 3)*64 + (sourcebyte(2) and 240)/16
第三个:
(sourcebyte(2) and 15)*16 + (sourcebyte(3) and 48)/64
第四个:
(sourcebyte(3) and 63)
base64解码过程正好相反,我就不多说了,另外有关mime的rfc还是有很多的,如果需要详
细情况请自己查找,我上面那张表就摘自
<rfc1521#
mime (multipurpose internet mail extensions)
part one: mechanisms for specifying and describing the format of internet
message bodies>