【发布时间】:2021-02-05 08:52:42
【问题描述】:
我想在 Arduino 论坛上发布此内容,但找不到任何“新帖子”按钮...
无论如何,我编写了这个函数来将二进制字符串转换为 int/long。
但是,它并不总是适用于大数字。
以下代码应该返回“888888”,但返回“888.887”
void setup() {
Serial.begin(9600);
String data = "11011001000000111000"; //888888
Serial.print(binStringToInt(data));
}
unsigned long binStringToInt(String bin) {
unsigned long total = 0;
int binIndex = 0;
for (int i = bin.length() - 1; i > - 1; i--) {
total += round(pow(2, binIndex)) * (bin.charAt(i) - '0');
binIndex++;
}
return total;
}
【问题讨论】:
-
pow 通常返回一个浮动类型。您是否尝试过其他方法,例如按位移位?
-
不要使用
pow(2, binIndex)。请改用1 << binIndex -
常见误解:StackExchange 站点不是经典论坛。它们是问答网站。您发布了一个“新问题”,但您需要有一个帐户。