PCI 슬롯에 포트 0x80 BIOS 포스트 디버그 카드를 설치했습니다. 부팅 후 카드에 CPU 온도를 표시하기 위해 의도적으로 이것을 사용하고 싶습니다. 주소는 1바이트를 차지하고 16진수로 표시됩니다. 카드에 쓰기 위해 두 자리 십진수 섭씨 온도 값을 단일 바이트로 변환하는 방법은 무엇입니까? 디스플레이는 16진수이므로 바이트 출력을 10진수로 읽을 수 있는 것으로 변환해야 한다는 점을 명심하세요. 하지만 이 시점에서는 바이트를 얻는 것만으로도 도움이 됩니다. 인터넷 검색이 나를 미치게 만듭니다.
예를 들어, echo d | dd of=/dev/port bs=1 count=1 seek=128
문자 d의 ASCII 바이트인 64를 표시합니다.
cat /sys/class/hwmon/hwmon0/temp2_input | cut -c1-2
CPU 온도를 °C 단위로 ASCII 2바이트로 제공합니다: 58
bash 명령 문자열은 cron 작업이나 시스템 타이머를 통해 호출할 수 있으므로 더 좋습니다.
감사해요! ! !
답변1
10진수 값으로 표시된 온도 판독값을 온도 판독값과 동일하게 표시되는 16진수 값에 해당하는 문자로 변환하려고 합니다.
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