hexa string vers decimal string

hexa string vers decimal string - C++ - Programmation

Marsh Posté le 16-12-2010 à 09:08:34    

Bonjour,
 
Je souhaite convertir un string contenant 10 valeurs hexadécimales en un string contenant l'équivalent décimale codé sur deux caractères.
 
Exemple :  
hexadécimal : 0f27951c0a0
decimal       : 0015020709050112001000
 
Si quelqu'un à une idée ou à déjà codé une fonction similaire, je suis preneur.
 
Merci d'avance,
 
Franck

Reply

Marsh Posté le 16-12-2010 à 09:08:34   

Reply

Marsh Posté le 16-12-2010 à 10:24:51    

Lance toi, montre du code, explique nous ce qui te bloque. Ce genre de fonction n'a pas pour autre but que d'être un éxercice pour apprendre le langage, on ne va donc pas le faire à ta place.


---------------
last.fm
Reply

Marsh Posté le 16-12-2010 à 15:31:39    

Oui, on peut voir ça comme un exercice à but pédagogique même si je n'ai jamais eu de cours de C++ et c'est ce qui me fait défaut en dirait :) Voilà ce que j'ai essayé :
 
string hexa="3a36365508";
string (decim);
for (int i = 0; i < hexa.size(); i++)
{
 sprintf(&decim[i], "%02x", hexa[i]);
}
 
Mais au lieu d'obtenir :
03 10 03 05 05 02 00 00 08
Je lis :  
33 61 33 36 33 36 35 35 30 38
 
Cordialement,
 
Franck

Reply

Marsh Posté le 16-12-2010 à 17:38:42    

Les caractères de 0 à f dans dans ta chaine suivent ce qu'on appelle le code ASCII, if faut que tu fasse un petit quelque chose avant d'afficher.


---------------
sheep++
Reply

Marsh Posté le 16-12-2010 à 22:23:52    

mes souvenirs de C++ sont (très) lointains mais c'est pas un peu HS le sprintf en C++ ?
 
Le %x c'est pour afficher un entier en hexa, toi tu veux l'inverse, spabon


Message édité par smaragdus le 16-12-2010 à 22:26:07
Reply

Marsh Posté le 17-12-2010 à 18:49:30    

montre ton code qui compile et sort ca, parce que ce que tu as écrit ici a peu de chance de passer ...


---------------
last.fm
Reply

Marsh Posté le 18-12-2010 à 17:12:02    

Ben si ça compile et ça sort bien ce qu'il a mis.


---------------
sheep++
Reply

Marsh Posté le 18-12-2010 à 17:58:31    

Voici une version C. Ca pourra t'aider pour écrire la version C++ :)  

Code :
  1. char in[32] = "0f27951c0a0";
  2. char out[64];
  3. unsigned long value;
  4. long index = 0;
  5. while (in[index] != 0)
  6. {
  7. sscanf(in+index,"%1x", &value);
  8. sprintf( out+2*index,"%02d",value);
  9. index++;
  10. }

Reply

Marsh Posté le 19-12-2010 à 00:37:39    

Quel est le type attendu pour decim ?
Quel est le sens de faire des sprintf à chaque caractère pour écrire une chaine complète ?
Qu'est-ce qui écrit effectivement la sortie que l'on doit lire ?
 
je viens de tester, par miracle, ce code compile et ne crashe pas sur mon essai, mais pour moi, ce code est complètement invalide.


---------------
last.fm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed