我有一个 Arduino,它正在从一个程序中读取一组三个字节,这些字节对应于执行器必须转动的度数。我需要将这些字节转换为整数,以便将这些整数传递给我的执行器。
例如,我知道我从程序接收到的默认静止状态值是 127。我编写了一个 C# 程序来解释这些字节,并且可以将它们转换为单个整数值。但是,我无法弄清楚如何在 Arduino 环境中使用 C 执行此操作。我尝试将每个字节类型转换为 char 并将其存储在字符串中。但是,这会返回毫无意义的乱码值。
void loop() {
if(Serial.available() && sw)
{
for(int j = 0; j < 3; j++)
{
input[j] = Serial.read();
}
//command = ((String)input).toInt();
sw = 0;
}
String myString = String((char *)input);
Serial.println(myString);
最佳答案
Serial.read()
的返回值是一个int
。因此,如果您有以下代码片段:int input[3]; for (int i = 0; i < 3; i++) { input[i] = Serial.read(); }
那么
input
应该存储三个int
。但是,代码:char* input[3]; for (int i = 0; i < 3; i++) { input[i] = Serial.read(); }
将只存储从
int
到char
的字节转换。如果要将其存储为字符串,则需要进行适当的转换。在这种情况下,使用
itoa
(参见 Arduino API description)。代码片段为:
#include <stdlib> char* convertedString = itoa(input[i]);
关于c - 如何将字节转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24597929/