Zahlen bitte und zwar per AJAX bzw. FetchAPI

Arrays mit Zahlen, dem Datentype entsprechend als Binary per FetchAPI oder AJAX transportieren

Gleitkommazahlen oder Ganze Zahlen haben verschiedene Längen. Die Zahl 123.123 zum Beispiel benötigt 6 Ziffern und einen Punkt, während die Zahl 33 nur 3 Ziffern zur Darstellung braucht. Sind Zahlen per HTTP zu übertragen, muss es eine Vereinbarung geben damit die Zahlen aus dem übertragenen Datenstrom wiederhergestellt werden können. Beispielsweise so, daß die Zahlen per Leerzeichen getrennt und am Ziel angekommen, auf diese Art und Weise wieder getrennt werden können.

Nun gibt es ja schon seit Langem in jeder Programmiersprache die sogenannten primitiven Datentypen. Das ist einmal eine Festlegung darüber ob es sich um Ganze Zahlen (integer) oder um Fließkommazahlen handelt (float). Des Weiteren wird über den Datentyp der Wertebereich festgelegt und ob es sich um vorzeichenlose oder um vorzeichenbehaftete Zahlen handelt. Mit dem Wertebereich wird gleichzeitig der Speicherbedarf einer einzelnen Zahl festgelegt. So werden für eine Zahl des aus c bekannten Datentypes float32_t im Hauptspeicher 32 Bit reserviert und: Genauso viel Platz benötigt eine solche Zahl auch in einer Datei: 4 Byte. Nachvollziehbar ist das auch in Perl, ein print length pack "f", 123.123; ergibt 4 (Bytes).

Mit untenstehendem JavaScript nun werden wir vom Server ein paar Gleitkommazahlen anfordern per fetchAPI:

JavaScript für diese Anwendung

Zur Übertragung der Daten wird die in die Textarea getätigte Eingabe per POST zum Server gesendet. Dort angekommen werden die Zahlen aus dem String geparst wobei hierzu am Leerzeichen gesplittet wird. Mit pack()-Schablone "f" wird sodann aus den wiederhergestellten Zahlen eine Binary mit Little Endians erzeugt die zurück zum Client gesendet wird. Untenstehender JavaScript-Code zeigt die Verarbeitung der Binary die als ArrayBuffer empfangen wurde. Aus dem ArrayBuffer wird ein DataView erzeugt und aus diesem vermittels dv.getFloat32(offset, 1) die Zahlen wiederhergestellt.













Datenschutzerklärung: Diese Seite dient rein privaten Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. s​os­@rolf­rost.de.