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