Bonjour,
j'ai la fonction suivante qui me permet de calculer un code en fonction d'une chaîne de caractères.
Code :
- 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;
- }
|
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!)
Quelqu'un a une idée ?
Message édité par Kineas le 07-04-2005 à 12:04:43