Необходимо переделать фун-цю хеширования с JS на Python для протокола между ними.И вот тут возник затык.Если проверяю на короткой строке результат одинаковый ,а если строку увеличить то выходят расхождения.Уже запутался и не знаю куда смотреть.
Код JS:
function hashCode(str) {
var hash = 0, i, chr, len;
if (str.length == 0) return hash;
for (i = 0, len = str.length; i < len; i++) {
chr = str.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash |= 0;
}
return hash;
};
И мой код в Python :
def hashCode(indx):
indx = str(indx)
hval = 0
if not len(indx):
return hval
for i in indx:
hval = ((hval << 5) - hval) + ord(i)
hval = ctypes.c_int32(hval).value
return ctypes.c_uint32(hval).value
Если проверить на равенство обе фун-и на примере строки "uyfwqewww" то получим 1041672786.А если строку увеличить то получаю расхождение.В побитовых операциях не силен,поэтому прошу сильно не бить)