我在 PCI 插槽中安装了端口 0x80 BIOS 后调试卡。我想在启动后有目的地使用它,将 CPU 温度显示在卡上。地址占用一个字节并以十六进制显示。如何将两位十进制摄氏温度值转换为单个字节以写入卡?请记住,显示是十六进制的,因此字节输出需要转换为以 10 为基数可读的内容,尽管此时仅获取字节会有所帮助。谷歌搜索让我发疯。
例如,echo d | dd of=/dev/port bs=1 count=1 seek=128
显示 64,即字母 d 的 ASCII 字节。
cat /sys/class/hwmon/hwmon0/temp2_input | cut -c1-2
以两个字节的 ASCII 形式给出 CPU 温度(以 °C 为单位):58
bash 命令字符串会更好,因为它可以通过 cron 作业或 systemd 计时器来调用。
谢谢!!!
答案1
您想要将十进制值读取的温度转换为与十六进制值相对应的字符,该字符在显示时与温度读取相同......
这个请求听起来比实际情况更复杂;printf
可用于打印与给定字符代码对应的字符:
$ printf "\x64\n"
d
所以你会得到你想要的结果
printf "\x$(cut -c1-2 < /sys/class/hwmon/hwmon0/temp2_input)" | dd of=/dev/port bs=1 count=1 seek=128