Arduino atoi()
功能未按预期工作。原始版本是656649,但是当转换为字符串时,它会打印1289.可能会发生什么?谢谢!
void setup() {
Serial.begin(9600);
}
void loop() {
String BT1 = "656649"
Serial.print(" String BT1: ");
Serial.print(BT1); // OUTPUT: 656649
char charBuf[50];
BT1.toCharArray(charBuf, 50) ;
Serial.print("Char buff: "); // OUTPUT: 656649
Serial.print(charBuf);
intBT1 = atoi(charBuf);
Serial.print(" intBT1: "); //OUTPUT: 1289
Serial.print(intBT1);
}
答案 0 :(得分:2)
Arduino int
和' unsigned int
类型是16位值,太小而无法容纳您使用的数字。您需要long
或unsigned long
类型来保存该值;这些在ATmega(Arduino)架构中长度为32位。
Arduino的许多编程问题源于这些不同的尺寸 - 因为现在大多数个人计算机都是64位,很容易忘记Arduino系列中心的微控制器是哈佛架构8-具有8位寄存器的位机。