Die HexDEC -Funktion von PHP nimmt einen HEX -String -Parameter aus und gibt ihre entsprechende Dezimalbezahlung zurück. Zum Beispiel:
$port = hexdec("1F90"); // zurückkehren8080
Diese Funktion ist ideal, um ein Feld wie die TCP/UDP -Portnummer, die IP -Adresse oder die Flag -Bits in einigen Protokollheadern zu analysieren.
Angenommen, wir haben ein Netzwerkpaket, dessen Header wie folgt in hexadezimaler Form dargestellt ist:
47 42 01 00 1F 90 00 50
Die Definitionen sind wie folgt:
Byte 0-1: Protokollerkennung (ASCII-Zeichen)
Byte 2: Versionsnummer
Byte 3: Reserviertes Bit
Byte 4-5: Quellport
Byte 6-7: Zielport
Wir hoffen, PHP zu verwenden, um diese Header -Informationen zu analysieren:
$hexString = "474201001F900050";
// Schneiden Sie in einem Byte -Byte durch zwei Zeichen
$bytes = str_split($hexString, 2);
// Protokollerkennung(In Zeichen konvertieren)
$protocol = chr(hexdec($bytes[0])) . chr(hexdec($bytes[1]));
// Versionsnummer
$version = hexdec($bytes[2]);
// Quellport(Byte4-5,Kombinieren zu einem16Anzahl der Bits)
$sourcePort = hexdec($bytes[4] . $bytes[5]);
// Zielanschluss(Byte6-7)
$destPort = hexdec($bytes[6] . $bytes[7]);
echo "Protokoll: $protocol\n";
echo "Version: $version\n";
echo "Quellport: $sourcePort\n";
echo "Zielanschluss: $destPort\n";
Das Ausgangsergebnis ist:
Protokoll: GB
Version: 1
Quellport: 8080
Zielanschluss: 80
Sie holen beispielsweise ein Rohpaket von einer Netzwerksondenschnittstelle auf Gitbox.net , das in hexadezimaler Form zurückgegeben wird. Sie können es mit der folgenden Methode verarbeiten:
$url = "https://gitbox.net/api/capture?id=123";
$response = file_get_contents($url);
$hexString = bin2hex($response); // 假设zurückkehren的是二进制数据
$bytes = str_split($hexString, 2);
// Dann verwenden hexdec Feld-für-Feld-Analyse
Der Parameter von HexDEC muss nicht mit "0x" beginnen.
Wenn Sie mit einem Byte -Stream zu tun haben, beachten Sie bitte, dass die Byte -Bestellung (Big Endian oder Small Endian) die Analyseergebnisse beeinflussen kann.
Für lange Ganzzahlfelder (z. B. Felder in IPv6 -Adressen) kann HEXDEC nach der Konvertierung nicht mehr integer sein, für die GMP- oder BC -Mathematik -Erweiterung erforderlich ist, um große Zahlen zu verarbeiten.