将 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);
我有这段代码,它接收一行插入到数组中的字节值。我怎样才能显示内容“可读”而不是像这样: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);