Bonjour,
j'ai la fonction suivante qui me permet de calculer un code en fonction d'une chaîne de caractères.
Il y a un problème lorsque la chaine passée en paramètre commence par une lettre accentuée (ret prend alors comme valeur -xxxxxxxxx) et j'aimerais résoudre ce problème sans bidouillage (si je met une condition sur les caractères à lire ca fonctionne mais ca rend la fonction de hashcode moins performante!)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 * int HashCode(string chaine) * { * int ret=0; // valeur retournée * int p=0; // parcours de la chaine en entree * cout << chaine << " : " << (unsigned int)chaine[p] << endl; ////////////// * while(chaine[p] != '\0') * { * ret = ret*256 + (unsigned int) chaine[p]; * if (ret >= TAILLE_MAX_TAB) * ret = ret%TAILLE_MAX_TAB; * p++; * } * cout << ret << endl; /////////// * return ret; * }
Quelqu'un a une idée ?
Partager