RegisterVariable in Hex analysieren

Ein Gerät gibt mir über einen Client Socket auf die Register Variable Werte in HEX. Ich möchte diese Werte analysieren.

Es ist ein \x21 \x01 \x00 \x00 \x05 „String“

Ich arbeite mit folgender Bastelei:

$c=array();
for ( $pos=0; $pos < strlen($_IPS[‚VALUE‘]) ; $pos ++ ) {
$byte = substr($_IPS[‚VALUE‘], $pos);
$c=$c+array($pos => ord($byte));
}

SetValue(12345, implode($c));

Der Output ist
iiyama_output

Ich vermute, dass dieses Gebastel viel eleganter gemacht werden könnte. Nur finde ich diese fertige Funktion nirgends. z.B.

baseconvert($_IPS[‚VALUE‘], 16, 10)

Irgendwas stimmt da mit der Erklärung doch nicht, wenn du von Hex redest aber ord benutzt anstatt hexdec oder hex2bin.
Sicher das es ein Hex String ist, und nicht die Anzeige des Debug auf Hex steht?
Meistens bekommst du ja wirklich einen binären Datenstrom, was auch erklärt warum ord funktioniert.
Dann wäre unpack oder ord die gängige Lösung.
Michael