Arduino:将布尔数组转换为十进制数

时间:2016-06-24 15:41:07

标签: arduino binary decimal pow

我的Arduino存在问题。我试图用这段代码将布尔数组转换为int:

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

感谢您的时间,大卫

1 个答案:

答案 0 :(得分: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;
}