>>441 いちいち考えんでも先人のをそのまま利用すれば良いと思う。
おれが良く使うのは、
unsigned int h = 0;
while (*str) {
 h = (h << 3) ^ *str++;
}