현재 위치: > 최신 기사 목록> 센서가 반환 한 HEX 데이터를 읽을 때 HEXDEC 기능은 어떻게 유용합니까?

센서가 반환 한 HEX 데이터를 읽을 때 HEXDEC 기능은 어떻게 유용합니까?

gitbox 2025-05-28

HEXDEC 기능은 무엇입니까?

HEXDEC 는 PHP의 내장 기능으로 16 진 문자열을 해당 10 진수 숫자로 변환합니다. 사용하는 것은 매우 간단합니다.

 int hexdec ( string $hex_string )
  • $ hex_string 은 입력 육각 문자열이며, 사례에 민감합니다.

  • 반환 값은 해당 소수점 정수입니다.


센서 데이터가 16 진수 인 이유는 무엇입니까?

센서가 통신 인터페이스 (예 : 직렬 포트, I2C, SPI 등)를 통해 데이터를 전송 대역폭을 저장하고 분석을 용이하게하기 위해 각각의 데이터 내용을 나타내는 데 사용됩니다. 예를 들어, 센서에 의해 반환 된 온도 값은 10 진수에서 26에 해당하는 0x1A 일 수 있습니다.


HEXDEC 기능 응용 프로그램 시나리오의 예

센서에서 16 진수 문자열을 받고 센서의 다른 측정을 나타내며 각각 두 문자는 하나의 바이트를 나타냅니다. 다음은 HEXDEC를 사용하여 온도 값을 구문 분석하고 계산하는 방법을 보여주는 PHP 코드입니다.

 <?php
// 센서가 반환 한 16 진수 데이터를 시뮬레이션합니다,그룹의 두 문자는 바이트를 나타냅니다
$hexData = "1A3F0B"; 

// 첫 바이트를 가져 가십시오 '1A',소수로 변환하십시오
$tempHex = substr($hexData, 0, 2);
$tempDec = hexdec($tempHex);

echo "센서 온도 값(소수):" . $tempDec;  // 산출:26
?>

이 예에서 Hexdec ( '1a')은 26을 반환하여 온도 값이 26도임을 나타냅니다 (특정 단위는 센서에 따라 정의 됨).


복잡한 16 진수 패킷을 처리하십시오

일반적으로 센서에서 반환 한 데이터 패킷에는 다음과 같은 여러 필드가 포함됩니다.

  • 2 바이트 온도

  • 2 바이트 습도

  • 1 바이트 상태 코드

패킷이 다음과 같은 16 진수 문자열이라고 가정합니다.

 $packet = "00FA007D01";

설명 :

  • 온도 : 00FA (16 진수)

  • 습도 : 007d (16 진수)

  • 상태 코드 : 01

hexdec을 사용하여 substr을 하나씩 분석 할 수 있습니다.

 <?php
$packet = "00FA007D01";

$temperatureHex = substr($packet, 0, 4);
$humidityHex = substr($packet, 4, 4);
$statusHex = substr($packet, 8, 2);

$temperature = hexdec($temperatureHex); // 250
$humidity = hexdec($humidityHex);       // 125
$status = hexdec($statusHex);           // 1

echo "온도:" . $temperature . "\n";
echo "습기:" . $humidity . "\n";
echo "상태 코드:" . $status . "\n";
?>

주목해야 할 것

  1. 데이터 범위 : HEXDEC은 부동 소수점 번호를 반환합니다. 숫자가 너무 크면 (PHP 정수 범위를 초과) GMP 또는 BCMATH 확장과 같은 다른 방법으로 처리해야합니다.

  2. 데이터 형식 : HEXDEC 에 입력 한 문자열에 법적 16 진 문자 (0-9, AF, AF) 만 포함되어 있는지 확인하십시오.

  3. 사례 효과 : HEXDEC은 사례에 민감하지 않으며 HEXDEC ( '1A')HEXDEC ( '1A') 의 결과는 동일합니다.