HashCode avec lettres accentuées... - C++ - Programmation
Marsh Posté le 07-04-2005 à 17:15:27
Hello,
Ce n'est pas une erreur.
Si tu ne veux plus de signe passe ta déclaration de retour de fonction et la variable Ret en unsigned int.
explication :
Le signe - c'est la valeur du premier bit (poids le plus fort) de l'integer signé.
exemple (sur un octet) :
64 = = 40 hex = 01000000 b (MSB à 0)
-64 = FC hex = 11000000 b (MSB à 1)
maintenant si tu fais Ret = 64 + 64 tu obtients ... -1 sur un signé et 128 sur un non signé.
=> 128 = 80 hex = 10000000 b (MSB à 1) => -1
C'est vrai sur un octet mais aussi sur un int, long ...
A+
Marsh Posté le 07-04-2005 à 12:04:03
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!)
Quelqu'un a une idée ?
Message édité par Kineas le 07-04-2005 à 12:04:43