![]() |
1
58
我最初使用Antonin Foller的一些VBScript代码: Base64 Encode VBS Function 和 Base64 Decode VBS Function . 在搜索Antonin的网站时,我看到他有一些代码 quoted printable encoding, using the CDO.Message object 所以我试过了。 最后,我将Mark的回答中提到的代码移植到VBScript(也使用了来自 this SO问题),并使用 Stream___StringToBinary 和 Stream_BinaryToString 从Antonin的网站获取使用MSXML编码的函数。 我运行了一个快速测试,以测量所有四种方法中1500个字符消息的编码时间(我需要发送到web服务的平均消息大小):
结果如下: Iterations : 10,000 Message Size : 1,500 +-------------+-----------+ + Method | Time (ms) + +-------------+-----------+ | VBScript | 301,391 | +-------------+-----------+ | QP | 12,922 | +-------------+-----------+ | QP (Binary) | 13,953 | +-------------+-----------+ | MSXML | 3,312 | +-------------+-----------+ 我还监测了测试运行时的内存利用率(Windows任务管理器中cscript.exe进程的内存使用情况)。我没有任何原始数据,但引用的可打印和MSXML解决方案的内存利用率都低于VBScript解决方案(前者为7000K,VBScript约为16000K)。 我决定为我的驱动程序使用MSXML解决方案。对于那些感兴趣的人,这是我使用的代码:
|
![]() |
2
13
这个答案 改进 Patrick Cuff's great answer 在这一点上 添加了对UTF-8和UTF-16LE编码(“Unicode”)的支持。 (此外,代码被简化了)。 示例:
重要提示:
|
![]() |
3
7
在没有ADODB的情况下,可以用纯vbscript对base64进行编码。流和MSXml2.DOM文档。 例如:
如果有宽字符( AscW(c)>255或<0 )在字符串中,您可以在调用btoa之前将其转换为utf-8。 utf-8转换也可以用纯vbscript编写。 |
![]() |
4
6
所以我有一些编码器和解码器的完整示例: 编码器:
解码器:
|
![]() |
5
2
这是一个不使用ADODB对象的解码示例。
|
![]() |
6
2
因此,您可以使用此对象对Base64进行编码或解码=
并使用数组对其进行编码或解码。 更多信息 VBS_Array 以下是我的方式:
|