如何从字节数组中读取生成二进制文件

时间:2016-03-19 18:44:33

标签: vbscript

这是一个使用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(...
  1. 从我的理解Chr生成2个字节的UTF-8,而不是一个(https://support.microsoft.com/en-us/kb/145745)。但对于新生成的二进制文件的正确字节输出,这不是必需的吗?
  2. 为什么使用And运算符使用一个字节ANSI字符的数字来屏蔽255。这有什么用途?

1 个答案:

答案 0 :(得分:0)

  1. 该代码未使用“Option Explicit”,因此变量声明无效。它使用未声明的变量。不使用两个声明和初始化的变量。

  2. 带有255的“二进制和”似乎没有用处

  3. 我使用4种不同的方法下载了4 MB的测试文件

    1. 使用Chrome,常规方式

    2. 在脚本中使用ADO方法。非常快,并且与浏览器版本字节完全相同(十六进制比较)

    3. 将AscB方法与“binary and with 255”一起使用。它非常非常非常慢,但与浏览器版本(十六进制比较)字节相同

    4. 使用不带“二进制和255”的AscB方法。它非常非常慢(但比5快一点)但与浏览器版本字节完全相同(Hex比较)

    5. 底线:该代码有效。尝试多种方法按优先顺序连接,尝试两种方法按优先顺序下载(它首先尝试ADO,如果ADO失败则只返回AscB方法)。我喜欢那段代码。