@分享一个很好用的代码地址输出组件
代码如下
#define __is_print(ch) ((unsigned int)((ch) - ' ') < 127u - ' ')
void 在这里插入代码片hex_dump(const uint8_t *ptr, uint16_t buflen)
{
unsigned char *buf = (unsigned char *)ptr;
int i, j;
for (i = 0; i < buflen; i += 16) {
OSI_LOGI(0,"%08X: ", i);
for (j = 0; j < 16; j++) {
if (i + j < buflen) {
OSI_LOGI(0,"%02X ", buf[i + j]);
}
else {
OSI_LOGI(0," ");
}
}
OSI_LOGI(0," ");
for (j = 0; j < 16; j++) {
if (i + j < buflen) {
OSI_LOGI(0,"%c", __is_print(buf[i + j]) ? buf[i + j] : '.');
}
}
OSI_LOGI(0,"\n");
}
}
函数入参:
1.你要打印的字符串首地址,或者结构体的首地址
2.地址长度
结果便可以打印到终端上面
小伙伴学会了,赶紧去试试吧
该代码定义了一个hex_dump函数,用于打印指定内存区域的内容。它接受一个字节数据指针和长度作为参数,以十六进制和ASCII形式输出到终端。__is_print宏用于判断字符是否可打印,否则替换为点号。

551

被折叠的 条评论
为什么被折叠?



