将字节数组(收到的 mqtt 消息)与零进行比较以发送通知
Compare byte array (received mqtt message) to zero to send notification
我正在构建 android 应用程序,该应用程序从 esp8266 接收一条 mqtt 消息,其中包含我学校项目的水对水传感器的百分比。
所以,当百分比不等于零时,我需要发送应用程序通知,但有一个问题。接收到的消息是一个字节数组,但由于某种原因它不仅仅是数字,它具有特定的 U+FFFD 替换字符,因此我无法将此字节数组与另一个数组(如 [0])进行比较。我正在尝试将收到的消息转换为字符串,删除所有奇怪的符号并将其与“0”进行比较。但出于某种原因,我又不能。例如,字符串“0����”清除了所有的�字符,但java代码仍然认为它不等于“0”。
我的代码:
if (topic.equals(topicstr2)){
byte[] res = message.getPayload();
result_notif = new String(res).replaceAll("�", "");
if (result_notif != "0"){
sendNotif();
}
}
result_notif是一个字符串,在代码的开头声明。
P.S。抱歉我的英语不好,我希望我已经把我的问题说清楚了。
使用 !result_notif.equals("0")
而不是 "result_info != "0"
" 并使用 .trim()
方法解决了我的问题。
代码:
if (topic.equals(topicstr2)){
byte[] res = message.getPayload();
result_notif = new String(res).replaceAll("�", "").trim();
intent.putExtra(MainActivity.PARAM_RESULT, result_notif);
sendBroadcast(intent);
if (!result_notif.equals("0")){
sendNotif();
}
}
我正在构建 android 应用程序,该应用程序从 esp8266 接收一条 mqtt 消息,其中包含我学校项目的水对水传感器的百分比。 所以,当百分比不等于零时,我需要发送应用程序通知,但有一个问题。接收到的消息是一个字节数组,但由于某种原因它不仅仅是数字,它具有特定的 U+FFFD 替换字符,因此我无法将此字节数组与另一个数组(如 [0])进行比较。我正在尝试将收到的消息转换为字符串,删除所有奇怪的符号并将其与“0”进行比较。但出于某种原因,我又不能。例如,字符串“0����”清除了所有的�字符,但java代码仍然认为它不等于“0”。
我的代码:
if (topic.equals(topicstr2)){
byte[] res = message.getPayload();
result_notif = new String(res).replaceAll("�", "");
if (result_notif != "0"){
sendNotif();
}
}
result_notif是一个字符串,在代码的开头声明。
P.S。抱歉我的英语不好,我希望我已经把我的问题说清楚了。
使用 !result_notif.equals("0")
而不是 "result_info != "0"
" 并使用 .trim()
方法解决了我的问题。
代码:
if (topic.equals(topicstr2)){
byte[] res = message.getPayload();
result_notif = new String(res).replaceAll("�", "").trim();
intent.putExtra(MainActivity.PARAM_RESULT, result_notif);
sendBroadcast(intent);
if (!result_notif.equals("0")){
sendNotif();
}
}