Jumbo.love |
---|
Мне нужно для задачи со строками уметь считать хэш для строк хотя бы длины 100 символов. Нашёл как это делать (http://e-maxx.ru/algo/string_hashes), но в delphi даже при подсчёте степеней P возникает переполнение на степени 12. Как можно выгодно в delphi посчитать хэш строки или хотя как сделать, что бы число обрезалось и не было ошибки с переполнением? |
из ссылки, в самом начале:
автор |
---|
Само значение хэша желательно хранить в самом большом числовом типе - int64, он же long long. Очевидно, что при длине строки порядка 20 символов уже будет происходить переполнение значение. Ключевой момент - что мы не обращаем внимание на эти переполнения, как бы беря хэш по модулю 2^64. |
По умолчанию (если не ошибаюсь) при умножении целых чисел, нет owerflow checking , т.е. не должно возникать ошибки переполнения (хотя переполнение возникает, естественно).
Во всяком случае, можно посмотреть хелп по опции Overflow checking - {$Q+} or {$Q-}