Linux kernel 我可以用二进制打印k吗?

Linux kernel 我可以用二进制打印k吗?,linux-kernel,kernel,Linux Kernel,Kernel,我有一个需要调试的位图,用二进制打印数字比用十进制打印要容易得多。我能做这个吗 可以尝试十六进制或八进制: printk("%02X", mybyte); printk("%03o", mybyte); printk使用与printf行为相同的sprintf。这意味着您不能以二进制打印k。二进制没有格式说明符,因此您必须自己编写函数。您可以使用循环将数字转换为二进制表示的字符串,然后打印该字符串。在arch/parisc/kernel/traps.c中有一个函数可以打印二进制值,名为print

我有一个需要调试的位图,用二进制打印数字比用十进制打印要容易得多。我能做这个吗

可以尝试十六进制或八进制:

printk("%02X", mybyte);
printk("%03o", mybyte);

printk使用与printf行为相同的sprintf。这意味着您不能以二进制打印k。二进制没有格式说明符,因此您必须自己编写函数。您可以使用循环将数字转换为二进制表示的字符串,然后打印该字符串。

arch/parisc/kernel/traps.c
中有一个函数可以打印二进制值,名为
printbinary()
。你可以把它复制到你的代码中(或者如果你碰巧在parisc上,就把它链接起来)。最好还是将它移到内核树中的某个通用位置,例如
lib
,并将补丁发送到LKML。

十六进制(
%x
)和八进制(
%o
)都是打印位图的好选项,因为每个数字对应于固定数量的位(4代表十六进制,3代表八进制)。不需要很长时间,您就可以快速“看到”八进制数字作为其3位二进制等价物。