将 uint8_t-array 转换为可读格式

Cast uint8_t-array to readable format

我有这段代码,它接收一行插入到数组中的字节值。我怎样才能显示内容“可读”而不是像这样:R$⸮⸮>⸮⸮⸮

相关代码如下:

  // Read data from UART.
  uint8_t myData[8];
  String myDataString = "";
  int length = 0;
  ESP_ERROR_CHECK(uart_get_buffered_data_len(uart_num, (size_t*)&length));
  length = uart_read_bytes(uart_num, myData, length, 100);
  if (length > 0) {
    for (int i=0; i<length; i++) {
      //SerialMon.write(myData[i]);
      myDataString += myData[i]+",";
    }

    SerialMon.println(myDataString); // should be something like "82,36,18,43,129,255,255,255"
  }

我认为问题在于,ASCII 中的 82 这样的字节值在显示为字符时对应于字母 'R'。是否有一种简单的方法来转换值,以便像 82 这样的元素将显示为 "82" 而不是......甚至更好: 作为十六进制?

您的假设是正确的,myData[i] 被解释为 ASCII 码,但您可以轻松地将其转换为 HEX 字符串,如下所示:

myDataString += String(myData[i], HEX);