Recuperer les nombres dans une chaine de caractère
cs_vectoriel
Messages postés10Date d'inscriptionsamedi 4 juin 2005StatutMembreDernière intervention 1 avril 2006
-
19 mars 2006 à 11:26
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 2009
-
19 mars 2006 à 17:37
Dans mon programme je prend un chaine de caractère et je la crypte en md5. J'aimerai pouvoir récupérer les 3 premiers chiffres présents dans le md5.
Est ce possible? merci d'avance
Oeil_de_taupe
Messages postés150Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention16 février 2009 19 mars 2006 à 13:01
Salut,
Tu veux dire par là que dans une chaine de caractères (le retour du MD5) tu voudais pouvoir transformer les 3 premiers chiffres (sous forme de char) et les transformer en entier?
Si j'ai bien compris ta question il te suffirait de faire une boucle sur ta chaîne de caractère afin d'isoler les 3 premiers chiffres (en format char) dans un autre buffer et utiliser la fonction atoi afin de convertir le char en chiffre.
Mais je n'y vois pas tellement l'intêret, tu enlèves beaucoup d'information au checksum il devients beaucoup moins efficace.
C'est peut-être (sans doute) moi qui ai mal compris ta question .
Oeil_de_taupe
Messages postés150Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention16 février 2009 19 mars 2006 à 17:19
Bon ben moi je suis plus lent que Joky , mais je poste quand même ma proposition.
J'imagine que on pourrait faire une fonction 1000X plus rapide, mais cette solution marche quand même.
#include<math.h>
#include<ctype.h>
#include
using namespace std;
//Permet de rechercher le nb de chiffre dans la chaine sans rien faire
unsigned int NbChiffreChaine(const char* chaine)
{
const char* pTemp = chaine;
unsigned int ret = 0;
//Fonction faisant le calcul des 3 premiers car
unsigned int RetChiffreMD5(const char* chaine)
{
//Variable permettant de savoir le nb de no retourne
double NbRetChiffre = NbChiffreChaine(chaine) ;
//Nombre à retournet
unsigned int NbRetTrouve = 0;
//Force le nb de chiffre à 3 (pas plus, comme t'as dit)
if(NbRetChiffre > 3)
NbRetChiffre = 3;
//Fait un nouveau pointeur afin de le faire "voyager" dans la chaine à la recherche de car.
const char* pTemp = chaine;
//Parcours toute la chaine (pas plus loin, sinon ==> BUFFER OVERFLOW :P)
while( *pTemp )
{
//Test si le caractère est un numéro (fonction prédéfinie dans le header "ctype.h")
if( isdigit(*pTemp) )
{
//Transforme le char en int
char temp = *pTemp;
int NoRet = atoi( &temp );
Sinon Joky a utilisé if( (*c > '0') && (*c < '9') ) et moi isdigit(*c) ça revient au même, même si je l'avoue la solution de Joky fait plus "Vrai programmeur" et la mienne "Programmeur du dimanche"
La taupe voit toujours tout (sauf les bugs)
Vous n’avez pas trouvé la réponse que vous recherchez ?