Мне было интересно, как вычислить хэш-код для данной строки вручную. Я понимаю, что в 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 обозначает символ в строке, а п есть длина строки. Использование 16-битных Юникода, то первый символ из строки меня будет вычислен как:
87 X (31^34)
Однако, что создает безумно большое количество. Я не могу себе представить, чтобы все персонажи были вместе. Итак, чтобы вычислить результат 32 бита младшего порядка, что бы я сделал? Долгое, что выше, равно -957986661, и я не могу это вычислить?
@BalusC, спасибо за улучшение моего ответа! :-) – dty
Я получаю основную идею (могу вычислить маленькие строки), но когда строка становится большой, я не уверен, что делать. – thomascirca
@ user458346, размер строки не важен. Это значения использования цикла, неважно, сколько времени цикл, он становится более сложным. –