我正在尝试在我的自定义 Linux 内核模块中打印以下变量以进行调试:
__le16 length; // The length of the data
u8 data[128];
该data
变量的最大长度为 128 字节,但我们可能不会全部使用它。长度变量决定了我们使用了多少data
变量。我想以data
十六进制格式打印变量的内容。我正在使用 for 循环这样做,但是,当我使用dmesg
. 我想这是因为printk
工作原理。我仍然可以在同一行打印内容,但使用%s
. 但是,我想以十六进制格式打印同一行中的所有字节。我怎样才能做到这一点?
u8 i = 0;
for (i = 0 ; i < length ; i++)
{
printk("0x%02x ", data[i]);
}
printk("\n");