c++ - C ++如何将一行HEX传递给字符串?
问题描述
因此,每当我收到一条消息时,都会以这种格式接收:
7B 22 6D 69 6E 22 3A 37 22 2C 22 6D 61 78 22 3A 39 7D
代码如下所示:
char rcv[64];
int i = 0;
while (modem.available()) {
rcv[i++] = (char)modem.read();
}
String data_received= "";
for (unsigned int j = 0; j < i; j++) {
data_received +=
Serial.print(rcv[j] >> 4, HEX);
Serial.print(rcv[j] & 0xF, HEX);
Serial.print(" ");
}
}
那个字符串 data_received 我想让它看起来像这样:
{"min":7","max":9}
但不知道如何将它们从十六进制转换为字符串并将它们连接在一起。
顺便说一下,这是 Arduino,图书馆是:MKRWAN
解决方案
忽略没有什么可以阻止您在 rcv 上的缓冲区溢出这一事实,请在 while 循环之后执行此操作:
rcv[i] = 0;
String data_received = rcv;
但是请确保你保护你的循环,这样它就不会尝试超过 63 个字符。
推荐阅读
- string - 在大量字符串查询中,前缀搜索的最佳数据结构是什么?
- c - 读取的字节数总是少于询问的字节数
- sql - 在不使用递归 CTE 的情况下查找课程的所有先决条件
- python - Spyder 高亮显示我的代码,看不到文字
- c++ - 在 STL 关联容器中使用基于迭代器的搜索和使用会更快吗?
- javascript - 使用钩子在 console.log() 上反应无穷大状态,为什么会这样?
- android - 无法在 toast 中添加上下文
- c++ - 使用坐标数组在 QOpenGLWidget 中绘制 GL_LINE
- python - AttributeError:模块“火炬”没有属性“hstack”
- sql-server - SQL Server 扩展事件与 DMV