Pages : 1
#1 Le 31/01/2006, à 11:57
- bronco0
conversion BCD en binaire naturel
Bonjours
je programme en c et je voudrais savoir comment on fait pour convertire du BCD en binaire naturel. Car je reçoit des trames via laison série d'une station météo et je les réenvoit par tcp, mais besoin de les convertir avant la transmission pour les stocker ensuite dans une base de données Mysql.
Merci d'avance.
#2 Le 31/01/2006, à 12:25
- Corwin of Amber
Re : conversion BCD en binaire naturel
Salut, je te le dis tout de suite je ne sais pas programmer mais j'ai quelques notions d'autodidacte. Ton truc c'est peut-être un problème classique !.
Enfin, bon voilà mon idée (après avoir cherché ce qu'est le bcd)
Fais un masquage sur ta valeur codée en bcd. Fais la somme de chacunes de tes valeurs masquées.
Exemple on a : 0111 1000 0101 en bcd. c'est égal à 785 si je me goure pas !
-Tu applique les masques 1111 0000 0000 ; 0000 1111 0000 et 0000 0000 1111
-tu obtiens : 7, 8 et 5
-tu fais la somme : 7*10^2+8*10^1+5*10^0
-tu convertis en binaire
après pour mettre ça en c, euh... si tu as de la patience attends le semestre prochain, je prends une uv d'initiation à la programmtion !
Dernière modification par Corwin of Amber (Le 31/01/2006, à 12:30)
Hors ligne
#3 Le 31/01/2006, à 12:26
- Corwin of Amber
Re : conversion BCD en binaire naturel
Je sens que ton post va quitter le plancher pour atterir dans la section programmation
Hors ligne
#4 Le 31/01/2006, à 13:02
- YannTech
Re : conversion BCD en binaire naturel
Salut,
il faut faire comme corwin of Amber l'a dit. En C :
Je gère pour un octet suffira de passer la moulinette ...
char hi_bit,lw_bit;
hi_bit = 0xF0 & ta_chaine;
lw_bit = 0x0F & ta_chaine;
nbcd = hi_bit*10 + lw_bit;
@+Yann
ps:le masque pour hi_bit ne fonctionne pas zarbi :-/
ps2: pas moyen de mettre un décalage pour le *10 ?
Dernière modification par YannTech (Le 31/01/2006, à 13:22)
Hors ligne
#5 Le 31/01/2006, à 13:53
- Corwin of Amber
Re : conversion BCD en binaire naturel
ps:le masque pour hi_bit ne fonctionne pas zarbi :-/
ps2: pas moyen de mettre un décalage pour le *10 ?
faut excuser la naiveté de ma question, mais ça ne coince pas au niveau de la conversion char vers décimal ?
Dernière modification par Corwin of Amber (Le 31/01/2006, à 13:54)
Hors ligne
#6 Le 31/01/2006, à 14:17
- YannTech
Re : conversion BCD en binaire naturel
Effectivement, mais notre très chère ami (gcc) fait un cast implicite. Bien vu sinon ;-)
Dernière modification par YannTech (Le 31/01/2006, à 14:18)
Hors ligne
Pages : 1