Вверх ↑
Ответов: 2059
Рейтинг: 132
#1: 2015-01-09 15:54:58 ЛС | профиль | цитата
aKey - твоя строка.
length - длина строки
aTableSize - константа - величина твоей таблицы (если умножить на три, то повторов практически не будет), т.е. если нужна разрядность байт, то 255, если dword, то FFFFFFFF.
M - константа. Надо подобрать число. В твоём случае наверное 000F00.
Всю малину портит 00. По этому может такой алгоритм и не подойдёт.

Вот алгоритм которым я пользуюсь для хеш таблиц. Нулевые значения тут тоже пройдут.
Выдрал из компонента.
code_34876.txt

Два компонента: http://forum.hiasm.com/forum_serv.php?q=56&id=3855
Обеспечивают доступ к значениям таблицы по левой части ключа.
Типа: бла бла бла=тра та та селёдка.
Работает очень шустро. Таблицу из 800 000 правил строит за миллисекунды.
Доступ по ключю - единицы микросекунд.
Второй компонент применяет к ключу маску и восстанавливает в правой части значения под звёздочками.
Типа - все *но *ют=всё *но *ют. Ключ "все вино выпьют" значение по ключу "всё вино выпьют".
карма: 6

0
файлы: 1code_34876.txt [1.8KB] [298]