0

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

4

2 回答 2

6

使用snprintf()family 将您的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

格式序列参考

于 2013-10-12T14:06:17.167 回答
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。因此,如果有人想知道:C99 标准的第 7.19.6.5 节(我在网上找不到 C11 的部分)涉及这个功能。第 7.19.6.1.8 节描述了转换说明符。

于 2013-10-12T14:21:13.600 回答