TapHome

Konvertierung von Datentypen

Konvertierungsfunktionen der TapHome-Skripte — TOSTRING mit Formatstrings für Zahlen und Datum, TODOUBLE, TOBYTES sowie ENCODE / DECODE für XML-Maskierung und Base64.

Konvertierungsfunktionen wandeln Werte in Text und zurück um: Zahlen und Datumswerte in formatierten Text, Text in Zahlen und Bytes sowie Text in Base64 oder eine XML-sichere Form. Die BCD-Konvertierung (TOBCD, FROMBCD) ist unter Bitoperationen beschrieben, die Farbkonvertierung (HSVTORGB, RGBTOHSV) unter Farben.

TOSTRING

TOSTRING wandelt jeden Wert in Text um — Zahlen und Datumswerte mit einem optionalen .NET-Formatstring, Bytesammlungen und Blobs mit einer Textkodierung.

1
2
3
TOSTRING(value)
TOSTRING(value, format)
TOSTRING(bytes, encoding)
EingabeErgebnis
StringUnverändert.
ZahlOhne Format die einfache Zahl mit Dezimalpunkt (21.5). Mit Format siehe Formatstrings.
datetimeOhne Format yyyy/MM/dd hh:mm:ss.fff (12-Stunden-Format, ohne AM oder PM); mit Format das angegebene Muster.
collection<uint8>, BlobDie Bytes als Text dekodiert. Das zweite Argument ist der Name der Kodierung, standardmäßig iso-8859-1, zum Beispiel "utf-8".
andere SammlungFehler Cannot cast collection of ‘X’ to string.

Beispiel

TOSTRING(192, "X");
# Result: "C0"
TOSTRING(192, "X4");
# Result: "00C0"
TOSTRING(123.34, "F4");
# Result: "123.3400"
TOSTRING(123.34, "F0");
# Result: "123"
TOSTRING(BYTECOLLECTION("48656c6c6f"));
# Result: "Hello"
TOSTRING(BYTECOLLECTION("48656c6c6f"), "iso-8859-1");
# Result: "Hello"

In einem Listener-Skript liest TOSTRING(RECEIVEDMSG.PAYLOAD, "utf-8") die empfangene Nachricht als Text — siehe RECEIVEDMSG.

Formatstrings

TOSTRING formatiert Zahlen und Datumswerte mit .NET-Formatstrings und verwendet immer einen Dezimalpunkt, unabhängig von den Spracheinstellungen der Steuereinheit.

FormatEingabeAusgabe
"F2"231.4721"231.47" — feste Anzahl von Dezimalstellen
"F0"21.5"22" — auf eine ganze Zahl gerundet
"0.0"7"7.0" — benutzerdefiniertes Muster
"00"7"07" — führende Nullen
"X", "X4"255"FF", "00FF" — hexadezimal, Großbuchstaben
"yyyy-MM-dd"datetime"2026-01-15"
"HH:mm"datetime"08:30" — 24-Stunden-Format
"dd.MM.yyyy HH:mm:ss"datetime"15.01.2026 08:30:00"

Hinweise

  • Ein Format, das ein großes X enthält, wandelt den Wert zuerst in eine 32-Bit-Ganzzahl um und gibt sie dann hexadezimal aus.
  • In Datumsformaten ist HH das 24-Stunden-Format und hh das 12-Stunden-Format; MM ist der Monat und mm die Minute.

Beispiel — Zeitstempel für ein Protokoll oder eine HTTP-Anfrage

VAR now := NOW();
"Updated " + TOSTRING(now, "dd.MM.yyyy HH:mm");

TODOUBLE

TODOUBLE liest eine Zahl aus Text mit Dezimalpunkt und gibt NaN zurück, wenn der Text keine Zahl ist.

1
TODOUBLE(text)

Rückgabewert — double. NaN, wenn der Text nicht gelesen werden kann; 0 für Null.

Hinweise — Der Text wird immer mit Dezimalpunkt gelesen. Ein Komma gilt als Tausendertrennzeichen, daher ergibt "1,5" den Wert 15. Ersetzen Sie das Komma zuerst, wenn die Quelle ein Dezimalkomma verwendet.

Beispiel

TODOUBLE("232");
# Result: 232
TODOUBLE("-192.332");
# Result: -192.332
TODOUBLE("some text");
# Result: NaN
TODOUBLE(REPLACE("21,5", ",", "."));
# Result: 21.5

TOBYTES

TOBYTES kodiert Text in eine Bytesammlung (collection<uint8>) und verwendet dabei iso-8859-1, sofern keine andere Kodierung angegeben ist.

1
2
TOBYTES(text)
TOBYTES(text, encoding)

Hinweise — Ältere Dokumentation nannte diese Funktion TOBYTEARRAY; diesen Namen gibt es in der Sprache nicht. Verwenden Sie TOBYTES, um Daten für SENDDATA oder für UNPACKVALUE vorzubereiten.

Beispiel

VAR bytes := TOBYTES("Hello");
LENGTH(bytes);
# Result: 5
VAR euro := TOBYTES("€", "utf-8");
LENGTH(euro);
# Result: 3

Fehler — TOBYTES - argument 1 must be a string (der Text ist Null); TOBYTES - unknown encoding.

ENCODE

ENCODE maskiert Text für XML ("xml") oder kodiert ihn als Base64 ("base64", aus den UTF-8-Bytes des Textes).

1
ENCODE(text, coding)

Hinweise

  • "xml" ersetzt &, ', ", > und < durch &amp;, &apos;, &quot;, &gt; und &lt;.
  • Leerer Text ergibt einen leeren String. Beim Namen der Kodierung wird die Groß- und Kleinschreibung nicht unterschieden.
  • "base64" erfordert Core 2022.2 oder neuer.

Beispiel

ENCODE("a<b & c>d", "xml");
# Result: "a&lt;b &amp; c&gt;d"
ENCODE("user:pass", "base64");
# Result: "dXNlcjpwYXNz"

Beispiel — HTTP-Basic-Authorization-Header

VAR auth := "Authorization: Basic " + ENCODE("user:pass", "base64");
VAR response := SENDHTTPREQUEST("/status", "GET", "", auth);

Fehler — ENCODE Unknown encoding. Valid values are ‘xml’, ‘base64’.

DECODE

DECODE kehrt ENCODE um: Es wandelt XML-Entitäten wieder in Zeichen um ("xml") oder dekodiert Base64 in UTF-8-Text ("base64").

1
DECODE(text, coding)

Beispiel

DECODE("dXNlcjpwYXNz", "base64");
# Result: "user:pass"
DECODE("a &lt; b", "xml");
# Result: "a < b"
DECODE(PARSEJSON(json, "payload"), "base64");

Fehler — The provided text does not have the base64 format.; DECODE Unknown encoding. Valid values are ‘xml’, ‘base64’.

Siehe auch — ENCODE, PARSEJSON.