2016-06-24 3 views
0

У меня проблема с моим Arduino. Я пытаюсь преобразовать булево массив в междунар этот кусок кода:Arduino: преобразовать булевский массив в десятичный

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; 
} 

Ничто действительно впечатляет, но вот мои результаты:

010101 == 20 (вместо 21)

100101 == 36 (вместо 37)

101001 == 40 (вместо 41)

011001 == 23 (вместо 25)

и т.д.

Спасибо за ваше время, Дэвид

ответ

0

Использование функции с плавающей точкой pow() для целых чисел, кажется, плохо, потому что он может содержать ошибки. Вместо этого попробуйте использовать бит-сдвиг.

int boolean_to_decimal(bool bol[]){ 
    int somme=0; 
    for (int i = 0; i<6; i++){ 
    somme += bol[i]*(1 << (5-i)); 
    } 
    return somme; 
} 
Смежные вопросы