我将数据存储在text_buf[4] = {0x1d, 0x72, 0x2f, 0x32}
中。当我将其发送到LCD上显示时,它会显示一些垃圾。我知道LCD只显示字符串,如何显示存储在text_buf
中的十六进制值?这有什么C的例子吗?请告诉我。
答案 0 :(得分:6)
使用snprintf()
系列将您的text_buf
(或任何数据)格式化为char
数组并调用您的LCD显示例程。
char line[256];
snprintf(line, sizeof(line), "%02x %02x %02x %02x\n", text_buf[0], text_buf[1], text_buf[2], text_buf[3]);
LCD_print(line); // LCD's display routine
答案 1 :(得分:3)
安全并使用snprintf()
。还要添加循环以概括任务并减少冗余:
char text[0x1000]; // or however many
size_t n = 0;
for (size_t i = 0; i < sizeof(buf) / sizeof(buf[0]); i++) {
int delta = snprintf(text + n, sizeof(text) - n, "%02x ", buf[i]);
if (delta < 0)
break; // handle error!
n += delta;
}
从技术上讲,上面的文档涉及POSIX,而不仅仅是标准C.因此,如果有人想知道:the C99 Standard的第7.19.6.5节(我在网上找不到C11)关注这个功能。条款7.19.6.1.8描述了转换说明符。