Convertir INT en ASCII

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 19 déc. 2007 à 13:50
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 19 déc. 2007 à 20:11
Bonjour,

Je presente mon probleme : j' effectue une communication entre un software developpe en C++ et un automate
et je rencontre un probleme sur une certaine donnée que je n'arrive pas a convertir.

l'automate m'envoit '89' mais moi je me retrouve avec un INT -> 14393 (je lis un type WORD)
j'ai essayer de le convertir avec itoa ou autre sprintf mais rien ny fait je n'arrive pas a retrouver le 89 de départ et le stocker dans une variable type char Dest[10] ....

comment faire pour convertir ce 14393 et retomber sur 89???

Merci de bien vouloir m'aider car je galere et sans cela je suis totalement bloqué dans mon travail.
Merci d'avance pour vos reponses.

 

4 réponses

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
19 déc. 2007 à 14:07
je rajoute que je ne comprends meme pas comment en partant de 89 en ASCII (soit disant) je me retrouve avec 14393
et pareil pour la suite  67->13879, 45->13365

quelqu'un pourrait avoir l'amabilité de m'aider sur ce coup la SVP.
car je suis totalement paumé :-(
je lui en serais gres jusqua la fin de ma vie ....

 
1
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
19 déc. 2007 à 18:14
Je lui en SAURAI gré...
C'est pas compliqué ton soft te communiques une chaîne fixe de 2 caractères en ASCII.
ex. convertis 14393 en hexa tu trouves 0x3839...soit précisemment les codes ASCII de '8' (0x38) et '9'(0x39).
Alors pour obtenir ton nombre pas compliqué :
WORD number; // je suppose qu'il est là-dedans

short number=13879; // je suppose qu'il est là-dedans
char result=10*(((number&0xFF00)>>0x8)-'0')+(number&0xFF)-'0';

Attention ca marchera seulement si la chaîne d'entrée est en décimal sinon faudra tester un peu, mais c'est pas bien compliqué.
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
19 déc. 2007 à 18:15
Ah mince une ligne de trop; lire simplement :

WORD number;
// je suppose qu'il est là-dedans
char result=10*(((number&0xFF00)>>0x8)-
'0')+(number&0xFF)-
'0';
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
19 déc. 2007 à 20:11
OK
merci de ton aide et de reprendre mon francais (je savais pas )
j'ai trouver un autre biais pour mon probleme, on es passer avec un DWORD
et la les 10 characteres sont passés niquel
jte remercie et garde ton code au chaud on sait jamais....

 
0
Rejoignez-nous