Bonjour, voilà tout est dans le titre, je voudrais bien pouvoir créé une mini application console qui puisse traiter en argument des chaines de caractères de ce type: 646576656c6f7070657a2e6e6574
Ici je vais pas travailler avec un argument mais directement dans une variable
la même chose que sur cette url en gros Hex to string

J'ai réussi partiellement ce que je voulais faire grace a l'aide de personne sur irc mais il y a des bug. je début en C depuis quelque jours.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
#include <stdio.h>
#include <math.h>
#include <windows.h>
 
// Méthode simple de conversion (sans vérification !)
// '0' représente le premier caractère (selon la table ascii) qui est un nombre
//	Sa valeur est 48, si par exemple nous avons '1' (qui vaut 49)
// '1' - '0' = 1  ( 49 - 48 = 1 )
int NombreASCII_2_Entier( char ascii ) {
	return ascii - '0';
}
 
// Méthode de conversion de base : http://visualcplus.blogspot.com/2006/03/hexadecimal-2-decimal.html
int ConvertionBase( int nombre, int baseOrigine, int baseFinal ) {
	int entier = 0,
	lenHexa = log10( (double)nombre );
 
	for( int i = 0; i < lenHexa + 1; i++ ) {
		int dizaines = pow((double)baseFinal,lenHexa - i);
 
		entier += (int)(nombre / dizaines) * pow( (double)baseOrigine, lenHexa - i );
		nombre %= dizaines;
	}
 
	return entier;
}
 
int main() {
 
   char chaineHexa[] = "646576656c6f7070657a2e6e6574";
 
    char tmpStrHexa[2];
 
    char tmpChar;
 
    int lenChaineHexa = strlen( chaineHexa ), q = 0;
 
    char buffer[(lenChaineHexa/2) * sizeof(char) +1];
 
    if (buffer != NULL)
    {
        for( int i = 0; i < lenChaineHexa; i += 2 ) {
            // Copie les deux caractères selon la position actuel
            // chaineHexa + i est équivalent à chaineHexa[i]. Ici j'utilise l'adition étant donnée
            //	que chaineHexa est à la base qu'une simple adresse en mémoire, et que nous voulons
            //	l'adresse du Nième élément (ou N est la variable i ici)
            memcpy( tmpStrHexa, chaineHexa + i , sizeof( *chaineHexa ) * 2 );
            // Convertie le code ASCII en entier
            tmpChar = NombreASCII_2_Entier( tmpStrHexa[0] ) * 10 + NombreASCII_2_Entier( tmpStrHexa[1] );
            // Convertie la valeur hexa (entrée par l'utilisateur) en entier
            tmpChar = ConvertionBase( tmpChar, 16, 10 );
            printf("--> %c%c --> %c\n", tmpStrHexa[0], tmpStrHexa[1], tmpChar);
            // %c affiche un caractère
            //printf("%c\n", tmpChar );
             buffer[q] = tmpChar;
 
            q++;
        }
        buffer[q] = '\0';
        printf("Text: %s\n", buffer);
 
    }
 
}
Voilà, au lieu de m'afficher " Text: developpez.net " il m'affiche que la moitié du résultat (sa dépend des caractères). je sais vraiment pas le problème.
car je voudrais que sa fonctionne aussi bien que si j'aurais fait directement dans une var
Code : Sélectionner tout - Visualiser dans une fenêtre à part
char dev[] = "\x64\x65\x76\x65\x6c\x6f\x70\x70\x65\x7a\x2e\x6e\x65\x74";
ce qui m'affichera bien le text.
Je penses que c'est tout a fait possible si ce site peu le faire, en C aussi.
Malgré ça j'ai eu quelques difficultés à trouvés des informations a ce sujet sur internet.

Merci à vous