举例:比如要下发一串十六进制指令,0x0102030405
云端
1、工具操作方式
https://the-x.cn/base64/
要注意勾选Hex进行base64编码,编码出的结果是AQIDBAU=
2、代码操作方式
java代码示例:
byte[] array = {0x01,0x02,0x03,0x04,0x05};
String messageContent = null;
try {
messageContent = new String(Base64.encodeBase64(array, false), "utf8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
计算出来的结果也是:AQIDBAU=
物联网平台
控制台-监控运维-日志服务页面-云到设备的消息和API调用消息,以Hex形式查看,都是原始消息内容:
0x0102030405
设备端
设备端需要用byte数组来接收十六进制数据,
注:十六进制数据直接打印,会是乱码,我们可以用bytesToHexString这个函数, 把十六进制数据转成对应的字符串方便观察,实际使用场景中肯定不能做这一步转换的,因为做了这一步转换,数据就成了String了。
java代码示例:
byte [] array = mqttMessage.getPayload();
System.out.println("十六进制:");
String hexString = bytesToHexString(array);
System.out.println(hexString);
public static final String bytesToHexString(byte[] bArray) {
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; i < bArray.length; i++) {
sTemp = Integer.toHexString(0xFF & bArray[i]);
if (sTemp.length() < 2) {
sb.append(0);
}
sb.append(sTemp.toUpperCase());
}
return sb.toString();
}
日志打印:收到十六进制 0102030405