已解决:
您可以使用以下方法更改字符缓冲区:
char *arg;
arg = SCmd.next();
int i;
sscanf(arg, "%d", &i);
Serial.print("String value ");
Serial.println(arg);
Serial.print("Integer value ");
Serial.println(i);
<小时/>
<小时/>
<小时/>
问题:
我似乎不知道如何将字符缓冲区内容从存储的字符串更改为整数。
例如:
“1”应为 1,
“121”应为 121
这是我尝试过的。
void doIt()
{
char *arg;
arg = SCmd.next(); // Get the next argument from the SerialCommand object buffer
if (arg != NULL) // As long as it existed, do it
{
int argInted = (int)arg; // Cast char arg* -> int argInted.
Serial.print("String value ");
Serial.println(arg);
Serial.print("Integer value ");
Serial.println(argInted); // Print this new found integer.
}
else {
Serial.println("Fix your arguements");
}
}
这是我得到的结果,每次的计算结果都是 371。我在指针缓冲区中存储了不同的东西,关于如何转换有什么想法吗?
Arduino Ready
> INPUT 1
String value 1
Integer value 371
> INPUT 2
String value 2
Integer value 371
> INPUT WHATSthisDO
String value WHATSthisDO
Integer value 371
最佳答案
引用 WhozCraig:这不是将 char* 转换为 int 的方式
简单的转换不起作用,因为 char 是 1 个字节,int 是 4 个字节,因此剩余的 3 个字节可能包含任何垃圾,导致不可预测的结果:
char s[1] = {'2'};
cout << s << endl;
cout << (int)s << endl;
cout << atoi(s) << endl;
在我的机器上引导
2
-5760069
2
关于c++ - 将字符缓冲区转换为整数(arduino),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23848934/