如何将字符串转换成数组_Arduino程序设计将字符串转换成数
字
1.描述
我们需要将字符串转换为数字,也许是因为通讯链路收到了字符串形式的值,⽽我们需要把它当做⼀个整数或者浮点数来⽤。
2.⽰例
这个代码⽚段在遇到任何⼀个不是数字的字符时(或者缓冲区已满)结束数字输⼊。要让这个功能起作⽤,我们需要打开串⼝监视器的换⾏选项或者输⼊⼀些其他的终⽌字符。
char strval[6]; //定义数组(必须⼤到⾜够保存全部数字)
int index = 0; //存储所接收的数字的数组索引
void setup()
{
Serial.begin(9600);
}
void loop()
数组转换成字符串{
if(Serial.available()>0)
{
char ch = ad();
if(index 5 && isDigit(ch))
{
strval[index++] = ch; //在字符串⾥加上ASCII字符
}
else
{
//当缓冲区满或遇到第⼀个⾮数字
strval[index] = 0; //以 0 终⽌字符串
int val = atoi(strval); //使⽤atoi将字符串转换为int
index = 0;
Serial.println(val); //串⼝打印转换过后的值
}
}
}
3.说明
名称晦涩的atoi(ASCII码到int)和atol(ASCII码到long)函数将字符串转换成整数或者长整数,想要使⽤它们,必须先要接收并且将整个字符串存储到字符数组,然后才能调⽤转换函数。上⾯⽰例代码创建了名为strval,可容纳多达5位数的字符数组(声明为strval[6],但要为终⽌空字符留位置),我们⽤来⾃ad的数字填充这个数组,直到它遇到不是有效数字的第⼀个字符。遇到空字符会结束该数组,并且调⽤atoi函数将字符数组转换成变量val。
此外还有⼀种⽅法将String转换成整数:toInt
String number = "1234";
int val = Int();
Arduino 1.0版本添加了parseInt⽅法,该⽅法可⽤于从串⼝和以太⽹得到整数值。下⾯代码⽚段将数字位组成的序列转换为数字。
if(Serial.available()>0)
{
val = Serial.parseInt();
}
如果数据在规定的时间间隔内没有到达,像parseInt函数这样的流分析⽅法使⽤超时将控制返交回给你的程序,默认的超时时间为1s,但是可以通过调⽤setTimeout⽅法来改变:
Serial.setTimeout(1000 * 60); //等待⼀分钟
4.实验现象
没有实验硬件的同学可以到下⾯的⼩程序购买哟~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论