我试图在Arduino上制作一个IP计算器,但在这部分我得到了错误的结果,我期待128,但它返回127,我认为问题在于pow功能(2,i)因为如果我用(2,7)硬编码pow我得到128.这是代码
result=0;
binNumber="10110100"; //I this bin number in another function
firstchar= binNumber.substring(0, 1); //extract the first char
c0="0000000";
fullNumber= firstchar + c0;
for(int i=0;i<=7;i++){
x = String (fullNumber[7-i]);
xint= x.toInt();
result= result + xint * pow(2,i);
}
lcd.print(result);
答案 0 :(得分:1)
不要使用pow(2,i)
。使用1<<i
。通过使用位移,可以避免可能的浮点错误。