在vbscript中的二进制文件的前n个字节中加载“字母数字字符”的ASCII代码(使代码更快)

在vbscript中的二进制文件的前n个字节中加载“字母数字字符”的ASCII代码(使代码更快),vbscript,fso,Vbscript,Fso,我想将所有字母和数字的ascii码加载到数组中,例如二进制文件的前n个字节100000。我写了这段代码: Option Explicit Dim i, lCharCount, lFileByte, lFileArray(99999) Dim oFSO, oStream, sInFileName 'Validate input command line If WScript.Arguments.Count < 1 Then MsgBox "No input file has be

我想将所有字母和数字的ascii码加载到数组中,例如二进制文件的前n个字节100000。我写了这段代码:

Option Explicit

Dim i, lCharCount, lFileByte, lFileArray(99999)
Dim oFSO, oStream, sInFileName

'Validate input command line
If WScript.Arguments.Count < 1 Then
    MsgBox "No input file has been specified!", vbExclamation, "My Script"
    WScript.Quit
End If

sInFileName = WScript.Arguments(0)
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oStream = oFSO.OpenTextFile(sInFileName, 1)
Do While Not oStream.AtEndOfStream
    lFileByte = Asc(oStream.Read(1))
    If (lFileByte > 47 And lFileByte < 58) Or (lFileByte > 64 And lFileByte < 91) Or (lFileByte > 96 And lFileByte < 123) Then
        lFileArray(lCharCount) = lFileByte
        lCharCount = lCharCount + 1
        If lCharCount = 100000 Then Exit Do
    End If
Loop
oStream.Close: Set oStream = Nothing

但我需要它跑得更快。我不想使用ADODB,但是,如果使用FSO不能加快速度,我愿意接受所有建议。有什么想法吗?

试着对文件调用ReadAll,而不是逐字符调用。这将读取整个文件并将其作为字符串返回。然后使用相同的循环,但这次是对返回的字符串,使用字符串扫描方法。

尝试以下方法:

cnt = 100000

data = oFSO.OpenTextFile(sInFileName).Read(cnt)
ReDim lFileArray(Len(data)-1)

For i = 1 To Len(data)
  lFileArray(i-1) = Asc(Mid(data, i, 1))
Next

文件在GB范围内可能会变得相当大,因此将整个文件读取到内存是毫无疑问的。此代码与我在标题中描述的一样,但与我的代码不同,但这是我的缺点。我在发帖时更改了目标和代码,但忘了更改标题和文字描述。不管怎样,我将从中读取块中所需的任何字节,而不是单个字节部分;这确实大大加快了速度。