在LCD上显示十六进制值

在LCD上显示十六进制值,c,C,我将数据存储在text_buf[4]={0x1d,0x72,0x2f,0x32}中。当我将其发送到LCD上显示时,它会显示一些垃圾。我知道LCD只显示字符串,如何使其显示存储在text\u buf中的十六进制值?有C语言的例子吗?请务必让我知道。使用snprintf()系列将文本(或任何数据)格式化为字符数组,并调用LCD的显示例程 char line[256]; snprintf(line, sizeof(line), "%02x %02x %02x %02x\n", text_buf[0],

我将数据存储在
text_buf[4]={0x1d,0x72,0x2f,0x32}
中。当我将其发送到LCD上显示时,它会显示一些垃圾。我知道LCD只显示字符串,如何使其显示存储在
text\u buf
中的十六进制值?有C语言的例子吗?请务必让我知道。

使用
snprintf()
系列将
文本(或任何数据)格式化为
字符数组,并调用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

.

注意安全,使用
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;
}
字符文本[0x1000];//或者不管有多少
尺寸n=0;
对于(size_t i=0;i
()



从技术上讲,上面的文档涉及POSIX,而不仅仅是标准C。因此,如果有人想知道:的第7.19.6.5节(我在网上找不到C11版本)涉及这个函数。第7.19.6.1.8条描述了转换规范。

是否可能重复?你有密码吗?期望的输出是什么?如果您的LCD仅打印字符串-将缓冲区转换为字符串并打印它您“拼写错误”
snprintf()
。另外,请不要使用cplusplus.com。首先是因为它不好,其次是因为这是一个C问题。哈,那我就“更正拼写”。但这是对C库的引用,所以我认为它是合适的。不幸的是,事实并非如此。我建议你看看.@ H2CO3:从技术上讲,这是POSIX参考。对于C STDLIB使用C++文档不是代码>程序员友好的< /代码>,也不是代码>计算机友好< /COD>。我最初否决了这个答案,因为我认为它过于复杂。H2C03和我进行了长时间的“讨论”,最后他向我指出,否决票是针对技术上不正确的答案或垃圾邮件。我取消了我的反对票,因为他的回答既不错误也不垃圾。。