我正在使用一个接受String对象作为参数的函数。该函数用于通过MQTT协议发送数据。我需要通过MQTT发送二进制数据。我设法做到了,但我的解决方案存在问题。这是相关的代码;
MqttClient mqtt("192.168.1.71", 1883, onMessageReceived);
char buffer[100];
//buffer filled with binary data terminated with null character at this point
mqtt_msg = String(buffer);
String topic = "XXX";
mqtt.publish(topic, mqtt_msg );
我将使用空字符0x00终止缓冲区中的二进制数据。当0x00恰好是二进制数据的一部分时,问题就来了。如何解决这个问题?
String对象类似于Arduino中使用的String对象。
答案 0 :(得分:2)
您在发送数据之前是否考虑过base64编码数据?这将提供数据的字符串安全版本,但在使用之前需要解码。
这是一个Arduino base64库(我自己不用)