Bonjour,
je suis en train de programmer un algorithme de cryptage basique, et pour ça, j'ai besoin de changer des chaines de caractères (QString, car j'utilise Qt) en nombres via le code ASCII de chaque caractère (abab => 97098097098, par exemple). Pour ça, j'ai fait cette boucle :
Le problème, c'est que quand je fais tourner cette séquence avec des chaines plutôt grandes (>8 caractères), les deux opérations (addition et multiplication) ne se font plus bien, ce qui génère des erreurs aléatoires, alors que la variable int peut stocker des nombres largement supérieurs à 1000 et la variable long double (CORRECTION) peut aller jusqu'à plus de 10^400, je crois, et que ces erreurs arrivent pour des valeurs de l'ordre de 10^20-10^25.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 long double codeASCIIsequence(0); QString chaine = separations[i]; for(int j(0); j<chaine.size(); j++) { char caractere = chaine.toStdString().c_str()[j]; int ascii = (int)(caractere); codeASCIIsequence*=1000; codeASCIIsequence+=ascii; }
Quelqu'un pourrait m'expliquer :
1°) d'où viennent ces erreurs
2°) comment les éviter ?
Merci d'avance
Partager