Мне было интересно, как вручную вычислить хеш-код для заданной строки.Я понимаю, что в Java вы можете сделать что-то вроде:
String me = "What you say what you say what?";
long whatever = me.hashCode();
Это все хорошо и здорово, но мне было интересно, как это сделать вручную.Я знаю, что данная формула для вычисления хеш-кода строки выглядит примерно так:
S0 X 31 ^ (n-1) + S1 X 31 ^ (n-2) + .... + S(n-2) X 31 + S(n-1)
Где S указывает символ в строке, а n - длина строки.Используя 16-битный Unicode, первый символ из строки me будет вычислен как:
87 X (31 ^ 34)
Однако это создает безумно большое число.Я не могу себе представить, как все персонажи складываются вместе.Итак, чтобы вычислить 32-битный результат самого низкого порядка, что я буду делать?Длинна, что бы ни было сверху равно -957986661, и я не как это рассчитать?