
Envoyé par
Mac LAK
En considérant que tu récupères ton chiffre binaire dans un char* :
1 2 3 4 5 6 7 8 9 10 11 12
| unsigned int bin2dec ( char* bin ) {
unsigned int result = 0 ;
while (*bin) {
if (*bin=='1')
result += 1 ;
result *= 2 ;
bin++ ;
}
return result ;
} |
Pas testé, mais ça devrait marcher. Bien sûr, la chaîne ne doit contenir que des zéros et des uns (sous forme de caractères), et être terminée normalement (= avec un caractère nul).
Aucun souci, ce code fonctionne.
On peut éviter le if en écrivant à la place
result=result + *bin - '0'
Et remplacer le while par un for mais c'est du détail.
Et si la fonction reçoit un int au lieu d'un string, alors un simple sprintf règlera le pb.
Partager