1. 项目中,有个地方要使用MQTTX工具来发布订阅,而客户服务器需要发送的是hex形式的字符串,并且又要在字符串前面添加三个字节(第一字节:报文格式,第二第三字节:字符串长度)。
2. 奇葩的是这三个字节添加到开头,不是以字符串形式添加,而是以数值添加,所以就写了个工具用来转换字符串的小工具
#include<stdio.h>
#include<string.h>
void stringToHex(char* str) {
int length = strlen(str); // 获取字符串长度
char arr[500];
for (int i = 0; i < length; i++) {
printf("%02x ", (unsigned char)str[i]); // 将每个字符转换为十六进制并打印输出
snprintf(&arr[2 * i], 4, "%2x", (unsigned char)str[i]); // 将每个字符转换为十六进制并打印输出
}
printf("\n");
printf("转换后:\r\n %s", arr);
}
//char arr[] = "{\"59451446\":{\"S1_ZT_1\":{\"ext_power_volt\":24.04,\"signal_4g\":31,\"sw_version\":1.1.1}}}";
//char arr[] = "{\"59451446\":{\"S1_ZT_1\":{\"ext_power_volt\":24.04,\r\n\"signal_4g\":31,\r\n\"sw_version\":1.1.1}}}";
//char arr[] = "{\"59451446\":{\"S1_ZT_1\":{\"ext_power_volt\":24.04}}}";
//char arr[] = "{\"59451446\":{\"S1_ZT_1\":{\"signal_4g\":30}}}";
char arr[] = "{\"59451446\":{\"S1_ZT_1\":{\"sw_version\":\"1.1.1\"}}}";
//char arr[] = "{\"59451446\":{\"S1_ZT_1\":{\"ext_power_volt\":24.04,\"signal_4g\":31}}}";
int main()
{
printf("字符串长度等于:0x%x\r\n", strlen(arr));
stringToHex(arr);
while (1);
return 1;
}
这样我只需要修改字符串内容,然后复制转换后的字符串就可以