Я хочу передать этот простой алгоритм хеширования на VB6.
Я придумал:
Public Function simpleHash(hashString As String) As Long
Dim hash As Long
Dim c As Long
Dim i As Integer
On Local Error Resume Next
hash = 5381
For i = 1 To Len(hashString)
c = AscW(Mid$(hashString, i, 1))
hash = hash * 33 + c
Next i
simpleHash = hash
End Function
Проблема заключается в том, что, несмотря на мой оператор On Error
, который подавляет исключения Error 6: Overflow, переменная hash
больше не обновляется, если происходит переполнение.
Как я могу исправить это или реализовать этот алгоритм по-другому?