У меня есть задание написать макрос в Libreoffice, который вычисляет га sh, если пользователь дает ему строку (низ) и начальный га sh (zacetni_ha sh). Для значения 9843 и строки «A1234567» вывод должен быть 21760, но моя функция выводит 24489. Кто-нибудь знает, в чем проблема?
Function izracunajHash(niz, zacetni_hash)
hash=zacetni_hash
maska=&H00FFFFFF
f = 1
length = len(niz)
Do
A = Mid(niz, f, 1)
A = Asc(A)
A = Val(A)
hash = (33*hash) + A
hash = hash And maska
print hash
f = f+1
Loop Until f = length
hash = hash And &H00007FFF
izracunajHash = hash
End Function