STR->INT (Modulbaustein)

Dezimalzahl als Zeichenkette in einen Zahlenwert (Integer, Ganzzahl ohne Nachkommastellen) umwandeln

Verfügbar ab Firmware Version 4.1 Insider Preview 1

Inhalt dieser Seite
richtet sich an
Experten

 

 

Über Protokolle wie MQTT und HTTP-/Rest-API werden Dezimalzahlen oft als Zeichenkette übergeben und nicht als binär kodierter Zahlenwert. Im Timberwolf Server können mathematische Operationen nur mit binär kodierten Zahlenwerten ausgeführt werden, daher ist eine Wandlung meist sinnvoll. Zudem werden für Ganzzahlen nur 4 Byte für die Speicherung benötigt.

Syntax

["STR->INT","$In", $Out]

Funktion

Die Eingangszeichenkette "$In" wird in einen binär kodierten Ganzzahlenwert umgewandelt, welche in $Out bereitgestellt wird.

Eingänge

  • "$In" Zeichenkette, welche die umzuwandelnden Dezimalzahl enthält.
    Beispielweise wird die Zeichenkette “255” in den Zahlenwert 255 umgewandelt. Der Dezimalzahl in der Zeichenkette kann “+” vorangestellt sein, dies ist nicht zwingend notwendig.

  • Für die Umwandlung genutzte Zeichen: +-1234567890 mit 8 Bit kodiert (ASCII, ANSI, UTF-8)

  • Keine Leerzeichen, keine Tausendertrennzeichen

  • Keine Vor- und Nachgestellten anderen Zeichen (wir empfehlen, andere Textteile oder Einheitenbezeichnungen zuvor mit dem RegEx-Modul abzutrennen)

Ausgänge

  • $Out Umgewandelte Ganzzahl (4 Byte Integer, vorzeichenbehaftet)

Besonderheiten

  • Es werden nur Zeichenketten mit 8 Bit pro Zeichen korrekt verarbeitet (ASCII, ANSI, UTF-8)

  • Der binär kodierte Zahlenwert am Ausgang wird als vorzeichenbehaftete 32 Bit Ganzzahl im Zweierkomplement ausgegeben

  • Eine negative Zahl in der Zeichenkette muss ein Minuszeichen (ohne Leerzeichen zwischen Minuszeichen und Zahl) vorangestellt haben

  • Die Zeichenkette muss mit einer Zahl oder EINEM Plus- oder Minuszeichen beginnen

  • Zahlenwerte größer als 2.147.483.647 bzw. kleiner als -2.147.483.648 können nicht verarbeitet werden (hierbei wird eine Meldung im Logik Diagnosemonitor unter “Warnungen & Fehler” geloggt)

  • Sollte die Zeichenkette außer den Zahlen weitere Zeichen nach den Zahlen enthalten, dann wird die umgewandelte Zahl zwar am Ausgang ausgegeben, jedoch wird im Logik Diagnosemonitor (unter “Warnungen & Fehler”) eine Warnung im Log ausgegeben

  • Nachkommastellen in der Zeichenkette werden ignoriert, es wird nur der ganzzahlige Anteil binär kodiert ausgegeben. In diesem Fall wird im Logik Diagnosemonitor (unter “Warnungen & Fehler”) eine Warnung im Log ausgegeben

Anwendungen

  • Zeichenkette mit Dezimalzahl umwandeln,

    • um mit dem Zahlenwert Berechnungen durchzuführen

    • um den Zahlenwert in einer Zeitserie zu speichern, damit die Aggregatfunktionen der Datenbank genutzt werden können, eine grafische Darstellung möglich ist und der benötigte Speicherplatz reduziert wird

    • um den Zahlenwert in der VISU darzustellen und wertabhängige Regeln für die Formatierung von Zahlenwerten nutzen zu können

Beispiele

Erfolgreiche Wandlungen

  • Zeichenkette “100” wird umgewandelt in den Zahlenwert 100

  • Zeichenkette “100,1” wird umgewandelt in den Zahlenwert 100

  • Zeichenkette “100.1” wird umgewandelt in den Zahlenwert 100

  • Zeichenkette “-100” wird umgewandelt in den Zahlenwert -100

  • Zeichenkette “43 Gramm” wird umgewandelt in 43 (Warnung im Log des Logik Diagnosemonitors)

FALSCHE oder KEINE Wandlung möglich

  • Zeichenkette “1.000,1” wird umgewandelt in den Zahlenwert 1 (der Dezimalpunkt als Tausendertrennzeichen wird als sonstiger Text betrachtet und an dieser Stelle die Konvertierung beendet)

  • Zeichenkette “1,234,456.789” wird umgewandelt in den Zahlenwert 1 (das Komma als Tausendertrennzeichen wird als sonstiger Text betrachtet und an dieser Stelle die Konvertierung beendet)

  • Zeichenkette “- 3,44 Grad Celsius” kann nicht gewandelt werden (Leerzeichen zwischen Minus und Zahl, Fehlerausgabe im Log des Logik Diagnosemonitors)

  • Zeichenkette “Temperatur -3°C” kann nicht gewandelt werden (Text vor der Zahl, Fehlerausgabe im Log des Logik Diagnosemonitors)
    Tipp: Verwenden Sie das Regex Modul um zunächst den relevanten Zahlenteil von der Zeichenkette abzutrennen.

  • Zeichenkette “2147483648” kann nicht gewandelt werden (Zahl nicht mit 32 Bit vorzeichenbehaftet darstellbar, Fehlerausgabe im Log des Logik Diagnosemonitors)

  • Zeichenkette “-2147483649” kann nicht gewandelt werden (Zahl nicht mit 32 Bit vorzeichenbehaftet darstellbar, Fehlerausgabe im Log des Logik Diagnosemonitors)

Entsprechendes Logik-Modul

 

 

2019 - 2024 by Elaborated Networks GmbH / Impressum / Datenschutzerklärung