![sysfs 中的数字是以十进制还是十六进制表示的?](https://linux22.com/image/231228/sysfs%20%E4%B8%AD%E7%9A%84%E6%95%B0%E5%AD%97%E6%98%AF%E4%BB%A5%E5%8D%81%E8%BF%9B%E5%88%B6%E8%BF%98%E6%98%AF%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E8%A1%A8%E7%A4%BA%E7%9A%84%EF%BC%9F.png)
我正在查看 sysfs 中的文件,特别是/sys/bus/usb/devices
文件包含小数字,表示为两个字符,例如“00”
我的所有示例都包含“09”或更低的数字。
我正在编写一个脚本来解释这些,我不清楚我是否应该期望“0A”或“10”作为下一个值(即,它是十进制还是十六进制?)
我已经看到这些是内核 kobject 的视图,但我无法找到它们序列化的来源。
您能否告诉我这些数字(例如,bInterfaceNumber 中的数字)是十进制还是十六进制,还是根据具体情况而变化。如果确实有所不同,我可以在源代码中的哪个位置检查 sysfs 中的特定文件?
如果相关的话,我的电脑主要是 Ubuntu,20.04 和 22.04 的混合体。我查看了usb-devices
脚本作为比较点,版本之间发生了变化,这让我对它想要做什么不太有信心。
答案1
它取决于 kobject 字段及其序列化函数。找到这些并不总是那么容易,但对于 USB 来说,它们很方便分组的。bInterfaceNumber
是如此声明:
usb_intf_attr(bInterfaceNumber, "%02x\n");
第二个参数是格式字符串,因此它显示十六进制值。下面的行显示显示bAlternateSetting
为十进制值。
所有 sysfs 条目都应该是有记录的,并被bInterfaceNumber
描述为
What: /sys/bus/usb/devices/usbX/bInterfaceNumber
Description:
Interface number, in hexadecimal.