Hallo,
ich habe ein Verständnisproblem bei der Umwandlung eines Hexstrings welcher Datum und Uhrzeitinfos beinhaltet. Der Variablentyp soll 32bit sein
Die Umwandlung von Stunden, Minuten und Monat „scheint“ einfach. Der Tag ist gefrickel, das Jahr mir völlig unklar. Leider habe ich auch keine gescheite MBUS-Doku zum Aufbau des Datums gefunden.
Anbei mein Script mit Beispieldaten und ersten Umrechnungen - es wäre schön wenn ein Experte sich dies mal anschauen könnte.
<?php
//Beispielwerte
$valHex="046D230AAE2B"; $uebersetzt="14.11.2021 10:35";
test ($uebersetzt,$valHex);
$valHex="046D2F13BB2C"; $uebersetzt="27.12.2021 19:47";
test ($uebersetzt,$valHex);
$valHex="046D040ABE2C"; $uebersetzt="30.12.2021 10:04";
test ($uebersetzt,$valHex);
$valHex="046D1F03BE2C"; $uebersetzt="30.12.2021 03:31";
test ($uebersetzt,$valHex);
$valHex="046D0613BD2C"; $uebersetzt="29.12.2021 19:06";
test ($uebersetzt,$valHex);
$valHex="046d2d16bf2c"; $uebersetzt="31.12.2021 22:43";
test ($uebersetzt,$valHex);
$valHex="046d3508c121"; $uebersetzt="01.01.2022 08:53";
test ($uebersetzt,$valHex);
$valHex="046d100fc121"; $uebersetzt="01.01.2022 15:16";
test ($uebersetzt,$valHex);
$valHex="046d3309c221"; $uebersetzt="02.01.2022 09:51";
test ($uebersetzt,$valHex);
//
function test ($uebersetzt,$valHex) {
$dataArr = str_split($valHex, 1);
echo "\n".$uebersetzt;
//Stunde und Minute und Monat funktionieren einfach
$Stunde=hexdec($dataArr[6].$dataArr[7]); echo "\tUhrzeit=$Stunde:";
$Minute=hexdec($dataArr[4].$dataArr[5]); echo $Minute;
$Monat=hexdec($dataArr[11]); echo "\tMonat=$Monat";
//Tag wird gebildet aus 2zeichen
$Tag=hexdec($dataArr[8]); //($dataArr[8]) erster Teil von Tag 0*16 oder 1*16 + zweiter teil von Tag
$Tag1=str_split($Tag, 1);
$Tag2=hexdec($dataArr[9]);
if ($Tag1[1]==1) { //das ist verrückt zum 01.01. hat sich statt erwartet der Wert wieder auf 0 leider auf 2 erhöht
$TagFinal=($Tag1[1]*16)+($Tag2); echo "\t Tag(16):$TagFinal";
}
else {
$TagFinal=($Tag2); echo "\t Tag:$TagFinal";
}
//das Jahr ist mir völlig unklar
return;
}
?>
Ciao
HerbertF