我正在尝试在自定义Linux内核模块中打印以下变量以进行调试:
__le16 length; // The length of the data
u8 data[128];
data
变量的最大长度为128个字节,但如果是,我们可能不会使用全部。 length变量决定了data
变量的使用量。我想以十六进制格式打印data
变量的内容。我这样做是使用for循环但是,当我使用dmesg
检查日志时,以下代码在单独的行中打印每个字节。我想这是因为printk
如何运作的机制。我仍然可以使用%s
将内容打印在同一行中,但作为字符串打印。但是,我想以十六进制格式打印同一行中的所有字节。我怎么能这样做?
u8 i = 0;
for (i = 0 ; i < length ; i++)
{
printk("0x%02x ", data[i]);
}
printk("\n");