Я видел, что Radix 37 часто используется, мне просто интересно, что он обозначает. Я конвертирую строки в числа для хэш-функции и знаю, что мы будем использовать Radix 37 ASCII значения цифр, я просто не знаю, почему мы выбрали 37 как основание, это просто случайно?
Я знаю, что Radix = основа системы счисления.
Я вижу, что когда мы просто используем числа в функции hash (), мы используем основание 10 … потому что в качестве базы чисел мы будем использовать .. просто .. 0,1,2,3,4,5, 6,7,8,9.
Строки — я вижу, что основание для строки, которая имеет все заглавные буквы (без пробелов, я предполагаю), составляет 26 … Поскольку в алфавите 26 букв, и мы будем представлять каждую из них с номером 0 = A, 1 = B, 2 = C и т. Д.
Что, черт возьми, означает 37, я прочитал что-то о 31 или 33.
Что я прочитал и понял, так это то, что мы используем отличное от 26 основание, когда нам приходится иметь дело с пробелами, строчными буквами, цифрами и особыми случаями.
Из всех шаблонов, которые я вижу, я бы подумал, что если бы мы перевели строку в код ASCII, мы использовали бы количество символов в этом ASCII, равное 127, я думаю.
Корневые числа в хеш-функциях, как правило, представляют собой либо простые числа для лучшего распределения, либо степени два минус один для самых быстрых вычислений.
31 и 37 обычно используются простые числа для умножение, во время хэш-функций, а не в виде оснований: они слишком малы.
Других решений пока нет …