这是一个使用VBScript下载二进制文件的代码片段:
...
Dim fs,ts
varByteArray = http.ResponseBody
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.CreateTextFile("filetowrite", True)
For lngCounter = 0 to UBound(varByteArray)
ts.Write Chr(255 And Ascb(Midb(varByteArrary, lngCounter + 1, 1)))
Next
ts.Close
(可以找到完整代码here)
我想知道:
Chr(255 And Ascb(...
Chr
生成2个字节的UTF-8,而不是一个(https://support.microsoft.com/en-us/kb/145745)。但对于新生成的二进制文件的正确字节输出,这不是必需的吗?And
运算符使用一个字节ANSI字符的数字来屏蔽255。这有什么用途?答案 0 :(得分:0)
该代码未使用“Option Explicit”,因此变量声明无效。它使用未声明的变量。不使用两个声明和初始化的变量。
带有255的“二进制和”似乎没有用处
我使用4种不同的方法下载了4 MB的测试文件
使用Chrome,常规方式
在脚本中使用ADO方法。非常快,并且与浏览器版本字节完全相同(十六进制比较)
将AscB方法与“binary and with 255”一起使用。它非常非常非常慢,但与浏览器版本(十六进制比较)字节相同
使用不带“二进制和255”的AscB方法。它非常非常慢(但比5快一点)但与浏览器版本字节完全相同(Hex比较)
底线:该代码有效。尝试多种方法按优先顺序连接,尝试两种方法按优先顺序下载(它首先尝试ADO,如果ADO失败则只返回AscB方法)。我喜欢那段代码。