VB.net字节数组搜索

时间:2011-02-09 17:30:57

标签: arrays search byte virus-scanning

我正在开发一个简单的病毒扫描程序,我正在寻找以下功能的速度改进:

Public Function FindAInB(ByRef byteArrayA() As Byte, ByRef byteArrayB() As Byte) As Integer
    Dim startmatch As Integer = -1
    Dim offsetA As Integer = 0
    Dim offsetB As Integer = 0

    For offsetB = 0 To byteArrayB.Length - 1
        If byteArrayA(offsetA) = byteArrayB(offsetB) Then
            If startmatch = -1 AndAlso offsetB < byteArrayB.Length - 8 Then
                startmatch = offsetB
            End If
            offsetA += 1
            If offsetA = byteArrayA.Length Then
                Exit For
            End If
        Else
            offsetA = 0
            startmatch = -1
        End If
    Next
    Return startmatch
End Function

我需要它是turbo fast,因为它在所选文件的字节中搜索大约7800字节数组。有点难以解释,但上面的代码是否有替代方法或加速它的方法?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您应该查看字符串搜索算法,例如Boyer-Moore

虽然您实际上并没有搜索文本,但是 在更大的字节字符串中搜索字节字符串,因此这些类型的算法可能会有很大帮助。