Convertir une chaine char* en hexa en entier [Résolu] - C++ - Programmation
Marsh Posté le 14-05-2003 à 23:28:10
JagStang a écrit : Voilà le problème. Je récupère le résultat d'un hachage MD5 qui se présente comme ceci : "d41d8cd98f00b204e9800998ecf8427e" |
en gros :
Code :
|
c'est sortie en live
Marsh Posté le 14-05-2003 à 23:38:41
oui. mais ma chaine fait 32 char. Alors 16^32 ça fait pas mal tout de même
Marsh Posté le 14-05-2003 à 23:45:58
c'est un changement d'algo en cours de rédaction
utilise des unsigned long alors
Marsh Posté le 15-05-2003 à 00:20:50
xav14 a écrit : c'est un changement d'algo en cours de rédaction |
ouais c clair, ca va suffire largement un unsigned long...
a vue de nez faut 2 DWORD64 (unsigned int64) pour stocker le bordel.
une simple struct genre :
Code :
|
devrait faire l'affaire...
edit : apres, a toi de clakezer du c++, tu rajoutes des operateurs a ta struct, genre = et <, qq methodes pour passer de char * vers t_Hash et inversement, et voila.
Marsh Posté le 15-05-2003 à 00:37:38
Konar a écrit : |
Je mets deux MD5 moi dans un long ! Et facile en plus...
Sur n importe quel proc 256 bits...
Marsh Posté le 15-05-2003 à 10:32:05
Hexa c'est en base 16
Mais en fait il me faudrait un simple fonction qui me retourne un entier, plutôt qu'un hexa. ça serait bcp plus simple
Si qqn connait d'autres fonction de hachage...
Marsh Posté le 15-05-2003 à 10:48:39
JagStang a écrit : |
j'avais bien compris banane
Marsh Posté le 15-05-2003 à 11:58:49
sscanf(chaine, "%x", nombre); permet de lire un nombre en hexa mais le problème c'est que c'est limité à 32 bits donc il faudra couper la chaine.
Marsh Posté le 15-05-2003 à 12:09:52
JagStang a écrit : Hexa c'est en base 16 |
je sens une grosse flemme de ta part sur ce coup la...
pas de fonction standard ki fait ca tout seul...
en plus, encore une fois, ton hexa codé sur 32 caracteres ne rentre pas dans un int, ou un double, te faut un nb sur 128 bits, ou 2 sur 64 bits, ou 4 sur 32 bits...
et on va pas te faire tout le boulot, mais un indice qd meme : tu coupes ta chaine en 2 (ou en 4), et tu mets chaque bout dans un int64 (ou un int). apres, comment tu fais pour mettre chaque bout ds une variable, a toi de voir, un scanf, un for(), etc.
Marsh Posté le 15-05-2003 à 12:13:14
Un truc dans ce genre devrait suffire
Code :
|
Marsh Posté le 15-05-2003 à 12:19:01
buff[16] = 0;
inutile
apres je connais pas ces formats de sscanf, sur ta plateforme, ça doite tre bon
Marsh Posté le 15-05-2003 à 12:21:10
++Taz a écrit : buff[16] = 0; |
Citation : |
Quand on connait mal un sujet, on se la ferme
Marsh Posté le 15-05-2003 à 12:25:30
marde, j'avais pas vu le 'n'
et pourkoi ne pas faire tout en un avec snscanf?
edit: qui n'existe pas partout,
Marsh Posté le 15-05-2003 à 13:21:43
Konar a écrit : |
Merci de ton aide
J'ai réglé le problème différemment. Je ne rechigne pas devant le travail
Merci quand même
Marsh Posté le 15-05-2003 à 17:16:37
Voilà la soluce. ça a l'air fonctionner
Code :
|
Marsh Posté le 15-05-2003 à 17:21:37
super efficace ton truc mec.... pourquoi tu aime pas sscanf?
Marsh Posté le 15-05-2003 à 17:32:37
merci
Ben je te dirais honnêtement que je maitrise pas trop les printf scanf et autres...
J'ai commencé à faire du peusdo C en cours en utilisant cin cout...
C'est pas très puriste je l'admets. Mais bon on apprend comme ça...
Marsh Posté le 15-05-2003 à 17:38:02
Non mais en fait c'est plus que bourrin cette fonction... mais bon. ça me suffit pour le moment
Marsh Posté le 15-05-2003 à 18:25:34
++Taz a écrit : super efficace ton truc mec.... pourquoi tu aime pas sscanf? |
Paske calculer des puissances c'est pas long... c'est bcp mieux...
De toute facon les gens veulent mettre un MD5 ds un long, donc, ils ont un proc 128 bits...
Alors fo bien l'utiliser la puissance de calcul...
Marsh Posté le 16-05-2003 à 19:09:07
Tu a pas pense au << c'est beaucoup plus efficase
BW *t élément du nombre multiprecison (tableau)(long)
UB8 *c buffer a transformé
int lc taille du buffer
Code :
|
C'est une fonction que j'avais ecrit pour convertir une chaine MD5 en nombre multi-precision
ca peut te donner des idées
Pour le MD5 tu fait un tableau de 8 => 256 bit
Sinon tu fait quoi avec le MD5 ???
Marsh Posté le 14-05-2003 à 23:17:57
Voilà le problème. Je récupère le résultat d'un hachage MD5 qui se présente comme ceci : "d41d8cd98f00b204e9800998ecf8427e"
il me faudrait convertir ce nombre en exa (qui est contenue dans un char*) en valeur entière
Message édité par jagstang le 15-05-2003 à 17:17:05