首页 > 解决方案 > 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

标签: c++

解决方案


忽略没有什么可以阻止您在 rcv 上的缓冲区溢出这一事实,请在 while 循环之后执行此操作:

rcv[i] = 0;
String data_received = rcv;

但是确保你保护你的循环,这样它就不会尝试超过 63 个字符。


推荐阅读