Conversion vers hexa

Résolu
chrisotphe7502 Messages postés 24 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 2 novembre 2009 - 29 oct. 2009 à 15:47
chrisotphe7502 Messages postés 24 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 2 novembre 2009 - 2 nov. 2009 à 09:48
Bonjour,

mon problème est le suivant, je souhaite convertir une chaine en hexa. La chaine de caractère est de la forme 01020304 et je souhaite envoyer (via une socket) les données 0x01 0x02 0x03 0x04.

Les solutions que j'ai trouvées ne fonctionnant pas, je vous demande de l'aide ici.

Merci.
Bonne journée.

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 oct. 2009 à 17:30
disons que on aurait: char chaine[] = "01020304";
on evite aisément l'appel de strtol() et donc du découpage de chaine.

char *c = chaine;
int i = 4;
DWORD r, v;
do { // 4 passes de 2 char
r = *c
v = *(c + 1);
if((r >= '0') && (r <= '9')) r -= '0';
else if((r >= 'A') && (r <= 'F')) r -= 55;
else if((r >= 'a') && (r <= 'f')) r -= 87;
if((v >= '0') && (v <= '9')) v -= '0';
else if((v >= 'A') && (v <= 'F')) v -= 55;
else if((v >= 'a') && (v <= 'f')) v -= 87;
r <<= 4;
c += 2;
r += v;

// ICI ENVOI DE r
} while(--i);

Pas testé mais devrait aller.

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 oct. 2009 à 16:48
De l'hexa c'est en chaine de caractères et vu que ta chaine est deja lisible sous forme hexa, il n'y a rien à convertir.

ciao...
BruNews, MVP VC++
0
chrisotphe7502 Messages postés 24 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 2 novembre 2009
30 oct. 2009 à 13:49
Mais ça va envoyer la valeur hexa de 0 puis la valeur hexa de 1 ... nan?
0
fregolo52 Messages postés 1114 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 6 mai 2021 4
30 oct. 2009 à 14:46
si si !!
Tu dois découper ta chaîne 2 caractères par 2 caractères.
Une fois que tu as ta liste de valeur sur 2 caractères, utilises strtol (je crois que cette fonction est dispo enc) pour avoir la valeur numérique de la chaîne.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chrisotphe7502 Messages postés 24 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 2 novembre 2009
2 nov. 2009 à 09:26
J'ai un problème avec DWORD, il n'est pas reconnu.
Y a t'il un moyen d'utiliser autre chose que DWORD qui soit dans la librairie standard ?
0
chrisotphe7502 Messages postés 24 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 2 novembre 2009
2 nov. 2009 à 09:48
Autant pour moi, j'ai remplacer DWORD par unsigned int et ça marche.

Merci pour votre aide.

Bonne journée.
0
Rejoignez-nous