2016-06-24 1 views
0

J'ai un problème avec mon Arduino. Je suis en train de convertir un tableau booléen en un int avec ce morceau de code:Arduino: convertir un tableau booléen en décimal

int boolean_to_decimal(bool bol[]) { 
    int somme=0; 
    for (int i = 0; i < 6; i++){ 
     somme += bol[i] * pow(2, 5-i); 
    } 
    return somme; 
} 

Rien vraiment impressionnant, mais voici mes résultats:

010101 == 20 (au lieu de 21)

100101 == 36 (au lieu de 37)

101001 == 40 (au lieu de 41)

011001 == 23 (au lieu de 25)

etc

Merci pour votre temps, David

Répondre

0

En utilisant la fonction à virgule flottante pour les entiers pow() semble mauvais, car il peut contenir des erreurs. Essayez plutôt d'utiliser le décalage de bits.

int boolean_to_decimal(bool bol[]){ 
    int somme=0; 
    for (int i = 0; i<6; i++){ 
    somme += bol[i]*(1 << (5-i)); 
    } 
    return somme; 
}