HexDec est une fonction intégrée en PHP pour convertir les chaînes hexadécimales en nombres décimaux correspondants. Il est très simple à utiliser:
int hexdec ( string $hex_string )
$ hex_string est la chaîne hexagonale d'entrée, insensible à la casse;
La valeur de retour est l'entier décimal correspondant.
Lorsque le capteur envoie des données via une interface de communication (comme le port série, I2C, SPI, etc.), afin d'économiser la bande passante de transmission et de faciliter l'analyse, le codage hexadécimal est souvent utilisé pour représenter le contenu des données de chaque octet. Par exemple, la valeur de température renvoyée par le capteur peut être 0x1a , correspondant à 26 en décimal.
Supposons que nous recevions une chaîne de chaînes hexadécimales du capteur, représentant différentes mesures du capteur, chaque deux caractères représentant un octet. Ce qui suit est un code PHP pour montrer comment utiliser HexDec pour analyser et calculer la valeur de température.
<?php
// Simuler les données hexadécimales renvoyées par le capteur,Deux personnages d'un groupe représentent un octet
$hexData = "1A3F0B";
// Prenez le premier octet '1A',Convertir en décimal
$tempHex = substr($hexData, 0, 2);
$tempDec = hexdec($tempHex);
echo "Valeur de température du capteur(Décimal):" . $tempDec; // Sortir:26
?>
Dans cet exemple, HexDec ('1A') renvoie 26, indiquant que la valeur de température est de 26 degrés (les unités spécifiques sont définies selon le capteur).
Habituellement, le paquet de données renvoyé par le capteur contient plusieurs champs, tels que:
Température de 2 octets
Humidité de 2 octets
Code d'état de 1 octet
Supposons que le paquet soit une chaîne hexadécimale comme ceci:
$packet = "00FA007D01";
Expliqué comme:
Température: 00fa (hexadécimal)
Humidité: 007d (hexadécimal)
Code d'état: 01
Nous pouvons utiliser hexdec pour analyser un par un avec 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 "température:" . $temperature . "\n";
echo "humidité:" . $humidity . "\n";
echo "Code d'état:" . $status . "\n";
?>
Plage de données : HexDec renvoie un numéro de point flottant. Si le nombre est trop grand (dépassant la plage entière PHP), il doit être géré avec d'autres méthodes, telles que l'utilisation de l'extension GMP ou BCMATH.
Format de données : assurez-vous que la chaîne entrée à HexDec ne contient que des caractères hexagonaux légaux (0-9, af, af).
Aucun effet de cas : HexDec n'est pas sensible à la casse, et les résultats de hexdec ('1a') et hexdec ('1a') sont les mêmes.