Atoi()函数不能正常工作Arduino

时间:2017-06-12 19:06:25

标签: c++ arduino

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

1 个答案:

答案 0 :(得分:2)

Arduino int和' unsigned int类型是16位值,太小而无法容纳您使用的数字。您需要longunsigned long类型来保存该值;这些在ATmega(Arduino)架构中长度为32位。

Arduino的许多编程问题源于这些不同的尺寸 - 因为现在大多数个人计算机都是64位,很容易忘记Arduino系列中心的微控制器是哈佛架构8-具有8位寄存器的位机。