Sven Rautenberg: Typumwandlung 2 x 16 Bit Word zu 1 x 32 Bit Fließkomma

Beitrag lesen

Moin!

Es geht nur nicht über den Hacker-Trick, zwei Integer-Werte in den Speicher zu schreiben und als Float-Wert wieder daraus auszulesen.

Ich würde es nicht als Hacker-Trick bezeichnen, sondern eher als die natürliche Methode, wenn man einen Speicher- oder Registerinhalt einfach als etwas anderes interpretiert, als es ursprünglich gemeint war.

Funktioniert aber nur, wenn man hardwarenah programmieren kann. Mit Javascript kann man das nicht, weil es keinen direkten Speicherzugriff gibt.

Man muss sich eine Funktion schreiben, die die Umrechnung von Integer in IEEE-Float manuell vornimmt. Und das dürfte etwas komplizierter werden.

Ja, zumal man auf diese Weise nur "korrekte" Werte gemäß IEEE 754 hinbekommt. Erhält man vom Remote-System aber fehlerhafte oder denormalisierte Werte, kann man sie nicht exakt rekonstruieren, man erhielte bestenfalls die gleichwertige normalisierte Darstellung oder NaN. Die Sonderfälle +INF und -INF kann man dagegen gezielt "herstellen", indem man einfach die entsprechenden Konstanten des Number-Objekts liest.

Ähm, hä? Der Hardware-Trick ist, 32 Bits als Integer in den Speicher zu schieben und als Float wieder zu lesen - ohne sie zu verändern.

Das muss man auch emulieren können. Aufgabe: Was "bedeuten" die folgenden 32 Bits Integer, wenn man sie als IEEE-Float ansehen würde. Wenn die SPS-Hardware fehlerhafte Floats rüberschiebt, hat man ein Problem.

- Sven Rautenberg