我正在尝试将传递给 mqtt 回调函数的 byte* 参数转换为 int 以进行比较,但我似乎无法让它工作。欢迎任何帮助。
int fsrReading;
void callback(char* topic, byte* payload, unsigned int length) {
for (int i=0;i<length;i++) {
Serial.print((char)payload[i]); // This works well
fsrReading = int((char)payload[i]);
if (fsrReading < 0){
...
最佳答案
执行此操作的正确方法取决于所使用的数字的确切表示形式。
我怀疑该消息是数字的字符串表示形式:“1234”,它是作为 ascii 字节值数组接收的。
如果是这种情况,您可以重建一个 String 对象并将其转换为 int:
int fsrReading;
void callback(char* topic, byte* payload, unsigned int length) {
String value = "";
for (int i=0;i<length;i++) {
value += (char)payload[i];
}
fsrReading = value.toInt();
...
这里的 arduino 教程中有一个将 String 转换为 Int 的示例:https://www.arduino.cc/en/Tutorial/StringToIntExample
关于c - MQTT 回调处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33077354/