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

时间:2013-09-23 19:56:08

标签: vbscript fso

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

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无法加速,我会对所有建议持开放态度。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

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

答案 1 :(得分:0)

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