在LCD上显示十六进制值

时间:2013-10-12 13:54:37

标签: c

我将数据存储在text_buf[4] = {0x1d, 0x72, 0x2f, 0x32}中。当我将其发送到LCD上显示时,它会显示一些垃圾。我知道LCD只显示字符串,如何显示存储在text_buf中的十六进制值?这有什么C的例子吗?请告诉我。

2 个答案:

答案 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

Reference for format sequence

答案 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;
}

documentation


从技术上讲,上面的文档涉及POSIX,而不仅仅是标准C.因此,如果有人想知道:the C99 Standard的第7.19.6.5节(我在网上找不到C11)关注这个功能。条款7.19.6.1.8描述了转换说明符。