Merci de votre solution très élégante avec memcpy mais il était demandé ceci dans l'énoncé :
	
		
			
			
				
					
 Envoyé par 
sergoid
					
				 
				//resultat[0] = x00; 
//resultat[1] = x60; 
//resultat[2] = x92; 
//resultat[3] = x44;
			
		 
	 
 Votre solution donne les valeurs en sens inverse mais peut-être que cela peut quand même convenir au demandeur, c'est à lui de voir. Je ne crois pas qu'il existe de fonction de recopie dans le sens inverse, il faudrait donc le programmer nous-mêmes par exemple
	
	| 12
 
 | char *ptr=(char*) & valeur;
for(int i=0;i<4;i++) Resultat[3-i]=*ptr++; | 
 Sinon effectivement, j'ai oublié les lettres hexa (pas assez réveillé peut-être), il faut donc soustraire 48 pour les chiffres et 55 pour les lettres. Donc je corrige juste pour le fun. Je crée un petite fonction d'extraction
	
	| 12
 3
 4
 
 | char TForm1::Extrac(char c)
{
if(c>57) return c-55; else return c-48;
} | 
 Dans ces conditions, la boucle de calcul devient
	
	for(int i=0;i<A.Length()/2;i++) Resultat[i]=Extrac(A[i*2+1])*16+Extrac(A[i*2+2]);
 Encore une fois, c'est juste pour le fun, des solutions immédiates ont été données. Comme j'ai fait beaucoup d'assembleur par le passé, je suis habitué à chercher moi-même les solutions. Mais en C++, il y a toute une collection de fonctions toutes prêtes. 
À bientôt
Gilles
						
					
Partager