djb2 Fonction de Hachage

Je suis en utilisant le djb2 algorithme pour générer la clé de hachage pour une chaîne qui est comme suit

hash(unsigned char *str)
{
    unsigned long hash = 5381;
    int c;

    while (c = *str++)
        hash = ((hash << 5) + hash) + c; /* hash * 33 + c */

    return hash;
}

Maintenant à chaque boucle il y a une multiplication à deux chiffres, Après un certain temps avec le 4ème de la 5ème caractère de la chaîne il y a un dépassement de la valeur de hachage devient énorme

Quelle est la bonne façon de revoir, de sorte que la valeur de hachage ne déborde pas et le hachage arrive aussi correctement

  • Il n'y a pas une telle chose comme DJB2 de hachage, il est le seul de la norme DJB, puis Salsa20 et coll.
  • cst.yorku.ca/~oz/hash.html fait référence à DJB2, je crois que la terminologie est largement utilisé, si ce ne sont pas officiellement reconnus.
InformationsquelleAutor Jainish | 2010-04-03