Hi !!
Mir stellt sich mir folgendes Problem in den Weg. Ich habe ein Programm vor mir, dass seine Daten in einer binären Form in einer Datei liegen hat. Also so eine Art Datenbank. Ich soll es nun schaffen, die Daten aus der Binärdatei herauszu holen und in eine MySQL-DB zu übernehmen. Das ganze funktioniert auch schon! Nur war das eigentlich mehr zum angewöhnen an die Sache. Ich muss jetzt einen Weg finden die Daten aus der MySQL-DB zurück in die Binärdatei zu schreiben (also eine lauffähige Binärdatei erstellen). Das ganze ist dafür, dass eine Software ab und zu mit der Datenbank im I-Net abzugleichen. Die Pflege der Daten geschieht im I-Net, aber es gibt halt noch ein Programm, dass in Pascal geschrieben wurde und auch noch weiterhin vertrieben werden soll.
Ich habe es auch schon geschafft eine lauffähige Version der Daten zu erstellen, aber da hab ich ein bischen getrickst. Es hapert an der Umwandlung von Fließkommazahlen ins Binäre format. Beim Auslesen der Datei hat man mir ein Beispiel-Script mitgegeben, dass in TCL geschrieben ist. Das brauchte ich sozusagen "einfach" nur in PHP übersetzen. Dort ist auch eine Funktion drin, die aus Binär-Daten eine Fließkommazahl erstellt. Leider ist das ganze aber ein bissel komplizierter wieder zurück zu rechnen.
Hier mal die Binär -> Fliesskomma Funktion:
Der Funktion werden 6 Byte übergeben, indenen sich die Fließkommazahl befindet. Die Funktion unpack "extrahiert" aus diesen Bytes 6 Werte... ich geb mal ein paar Beispiele:
Vom Prinzip her muss ich "einfach" nur eine Funktion haben, die mir aus der Fließkommazahl, die einzelnen Array-Werte ($data) extrahiert.
Hat wer ne' Idee?! Oder kennt wer irgendwelche Quellen indenen ich herausfinde nach welchen Spezifikationen Fließkommazahlen von Pascal geschpeichert werden? Für jeden Tip wäre ich dankbar!
Gruss Jan
Mir stellt sich mir folgendes Problem in den Weg. Ich habe ein Programm vor mir, dass seine Daten in einer binären Form in einer Datei liegen hat. Also so eine Art Datenbank. Ich soll es nun schaffen, die Daten aus der Binärdatei herauszu holen und in eine MySQL-DB zu übernehmen. Das ganze funktioniert auch schon! Nur war das eigentlich mehr zum angewöhnen an die Sache. Ich muss jetzt einen Weg finden die Daten aus der MySQL-DB zurück in die Binärdatei zu schreiben (also eine lauffähige Binärdatei erstellen). Das ganze ist dafür, dass eine Software ab und zu mit der Datenbank im I-Net abzugleichen. Die Pflege der Daten geschieht im I-Net, aber es gibt halt noch ein Programm, dass in Pascal geschrieben wurde und auch noch weiterhin vertrieben werden soll.
Ich habe es auch schon geschafft eine lauffähige Version der Daten zu erstellen, aber da hab ich ein bischen getrickst. Es hapert an der Umwandlung von Fließkommazahlen ins Binäre format. Beim Auslesen der Datei hat man mir ein Beispiel-Script mitgegeben, dass in TCL geschrieben ist. Das brauchte ich sozusagen "einfach" nur in PHP übersetzen. Dort ist auch eine Funktion drin, die aus Binär-Daten eine Fließkommazahl erstellt. Leider ist das ganze aber ein bissel komplizierter wieder zurück zu rechnen.
Hier mal die Binär -> Fliesskomma Funktion:
PHP-Code:
function convreal ($sixbytes) {
$data = @unpack("cPOW/c4MANT/cMANTnull",$sixbytes);
if($data) {
$real = pow(2,($data[POW]+0x100)%0x100-129);
if ($data[MANTnull]<0) {
$real = -$real;
$data[MANTnull] = abs($data[MANTnull]);
}
$div = $real/128.0;
$data[MANT5] = $data[MANTnull];
for ($j = 5; $j>=1; $j--) {
$real = $real+(($data["MANT".$j]+0x100)%0x100)*$div;
$div = $div/256.0;
}
$real = round($real*100)/100.0;
}
else {
$real = 0;
}
return $real;
}
Code:
$data[POW] | $data[MANT1] | $data[MANT2] | $data[MANT3] | $data[MANT4] | $data[MANTnull] | ----------------------------------------------------------------------------------------------------- -127 | 0 | 0 | 0 | 0 | 0 | = 1 127 | 51 | 51 | 51 | 51 | 51 | = 0.35 -127 | -51 | -52 | -52 | -52 | 12 | = 1.1 127 | 0 | 0 | 0 | 0 | 0 | = 0.25 127 | -61 | -11 | 40 | 92 | 15 | = 0.28 -128 | 102 | 102 | 102 | 102 | 102 | = 0.9 -128 | 0 | 0 | 0 | 0 | 0 | = 0.5
Hat wer ne' Idee?! Oder kennt wer irgendwelche Quellen indenen ich herausfinde nach welchen Spezifikationen Fließkommazahlen von Pascal geschpeichert werden? Für jeden Tip wäre ich dankbar!
Gruss Jan
Kommentar