Hexdec ist eine integrierte Funktion in PHP, um Hexadezimalzapfen in entsprechende Dezimalzahlen umzuwandeln. Es ist sehr einfach zu verwenden:
int hexdec ( string $hex_string )
$ hex_string ist die Eingabe-Hex-Zeichenfolge, die nicht unterempfindlich ist.
Der Rückgabewert ist die entsprechende Dezimalbezahlung.
Wenn der Sensor Daten über eine Kommunikationsschnittstelle (z. B. serieller Port, I2C, SPI usw.) sendet, um die Transmissionsbandbreite zu sparen und die Analyse zu erleichtern, wird die hexadezimale Kodierung häufig verwendet, um den Dateninhalt jedes Bytes darzustellen. Beispielsweise kann der vom Sensor zurückgegebene Temperaturwert 0x1a sein, der 26 in Dezimalzahl entspricht.
Angenommen, wir erhalten eine Reihe von hexadezimalen Zeichenfolgen aus dem Sensor, die unterschiedliche Messungen des Sensors darstellen, wobei alle zwei Zeichen ein Byte darstellen. Das Folgende ist ein PHP -Code, um zu demonstrieren, wie HexDEC verwendet wird, um den Temperaturwert zu analysieren und zu berechnen.
<?php
// Simulieren Sie die vom Sensor zurückgegebenen Hexadezimaldaten,Zwei Zeichen in einer Gruppe repräsentieren ein Byte
$hexData = "1A3F0B";
// Das erste Byte nehmen '1A',In Dezimalheit konvertieren
$tempHex = substr($hexData, 0, 2);
$tempDec = hexdec($tempHex);
echo "Sensortemperaturwert(Dezimal):" . $tempDec; // Ausgabe:26
?>
In diesem Beispiel gibt HexDec ('1a') 26 zurück, was darauf hinweist, dass der Temperaturwert 26 Grad beträgt (spezifische Einheiten werden nach dem Sensor definiert).
Normalerweise enthält das vom Sensor zurückgegebene Datenpaket mehrere Felder, wie z. B.:
2 Bytes Temperatur
2 Byte -Luftfeuchtigkeit
1 Byte -Statuscode
Angenommen, das Paket ist eine hexadezimale Schnur wie diese:
$packet = "00FA007D01";
Erklärt als:
Temperatur: 00FA (hexadezimal)
Luftfeuchtigkeit: 007d (hexadezimal)
Statuscode: 01
Wir können mit HexDEC eins nacheinander mit Substr analysieren:
<?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 "Temperatur:" . $temperature . "\n";
echo "Luftfeuchtigkeit:" . $humidity . "\n";
echo "Statuscode:" . $status . "\n";
?>
Datenbereich : HexDec gibt eine schwimmende Punktzahl zurück. Wenn die Zahl zu groß ist (überschreitet den PHP -Ganzzahlbereich), muss sie mit anderen Methoden behandelt werden, z. B. die Verwendung von GMP- oder BCMATH -Erweiterung.
Datenformat : Stellen Sie sicher, dass die an HexDec eingegebene Zeichenfolge nur legale Hex-Zeichen (0-9, AF, AF) enthält.
Kein Falleffekt : HexDec ist nicht sensibel, und die Ergebnisse von Hexdec ('1a') und Hexdec ('1a') sind gleich.