Хеш-функция для varchar (string) в C ++ - PullRequest
1 голос
/ 10 февраля 2012

У меня есть ключ типа varchar (512), я хочу хэшировать его, используя только первые 2 или первые 3 символа этой строкиПожалуйста, дайте мне знать, какую хеш-функцию использовать в C ++.Я хочу получить значение хеша только в цифрах.Диапазон числа может иметь тип long, т.е. int (64).

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Почему бы просто не поместить символы в целое число без знака, например так:

unsigned int hash = ((unsigned int) field[0]) |
                    ((unsigned int) field[1] << 8) |
                    ((unsigned int) field[2] << 16);

Это быстро, просто, и вы получаете уникальные значения для всех уникальных комбинаций первых трех букв.

0 голосов
/ 10 февраля 2012

Используйте функцию Boost CRC Hash. Больше информации здесь: http://www.boost.org/doc/libs/1_37_0/libs/crc/index.html

...