在许多Arduino项目中,我们经常从一些设备(如树莓派)或网络数据库中提取数据进行一些算术换算,但这些数据是以字符串的形式存在。在Arduino中有一个函数,我们可以通过它将字符串转换成整数,这样我们就可以对它们进行算术运算。
在这篇文章中,我们将通过使用一个内置的函数 **toInt()**将Arduino中的字符串转换为整数。
如何将字符串转换为整数
在Arduino中,有许多内置函数使我们能够轻松完成不同的任务,其中之一就是toInt()函数。toInt()函数是用来将字符串转换为整数的。为了更简单地了解它,我们将考虑以下代码。
String a="1200";
int num;
void setup(){
Serial.begin(9600);
num=a.toInt();
Serial.print("The converted string into integer is: ");
Serial.print(num);
}
void loop(){
}

在上面的代码中,我们已经声明了两个变量;"a"是字符串数据类型,"num"是整数数据类型。然后我们使用 toInt()函数将字符串转换为整数,并将结果存储在 "num"变量中。最后,以9600的波特率在串行显示器上显示结果。
上述代码的输出为:

我们已经看到,字符串被转换为整数,然后存储在num变量中。考虑另一个例子,我们尝试用代码将字符串直接存储到一个整数变量中。
String a="1200";int num;
void setup(){
Serial.begin(9600);
num=a;
Serial.print("The converted string into integer is: ");
Serial.print(num);
}
void loop(){
}

上面的代码与我们上面使用toInt()函数执行的代码相同,但两者的区别在于;在这段代码中,我们试图将字符串直接保存为整数值。其输出结果是。

它产生了 "error: cannot convert 'String' to 'int' in assignment"的错误,这意味着我们可以将字符串直接存入整数变量。
使用toInt()函数的限制
使用 toInt()函数有一个限制,那就是不能以任何字符开头,否则会给出一个零值。例如,我们运行第一段使用 **toInt()**的代码,存储的值是 "a1200",而不是 "1200"。
String a="a1200";int num;
void setup(){
Serial.begin(9600);
num=a.toInt();
Serial.print("The converted string into integer is: ");
Serial.print(num);
}
void loop(){
}

输出结果如:

同样,如果你通过 toInt()函数传递一串字符,其结果将是0。再考虑一下a="LinuxHint "的代码。
String a="LinuxHint";int num;
void setup(){
Serial.begin(9600);
num=a.toInt();
Serial.print("The converted string into integer is: ");
Serial.print(num);
}
void loop(){
}

输出结果将是:

结论
内置的 toInt()函数用于将字符串转换为int值。当我们从其他设备中提取数据时,需要这种转换,我们需要的是int数据类型的数据,而不是字符串。在这篇文章中,我们通过实例讨论了Arduino中字符串数据类型向int数据类型转换的内置函数。