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.

Zuletzt aktualisiert:

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

# Hexadezimaltext, Großbuchstaben
TOSTRING(192, "X");
# Result: "C0"
TOSTRING(192, "X4");
# Result: "00C0"
# feste Anzahl Dezimalstellen
TOSTRING(123.34, "F4");
# Result: "123.3400"
TOSTRING(123.34, "F0");
# Result: "123"
# Bytes als Text dekodiert
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

# Text mit Dezimalpunkt in eine Zahl
TODOUBLE("232");
# Result: 232
TODOUBLE("-192.332");
# Result: -192.332
# keine Zahl ergibt NaN
TODOUBLE("some text");
# Result: NaN
# Dezimalkomma zuerst durch Punkt ersetzen
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

# Text in Bytes, Standard iso-8859-1
VAR bytes := TOBYTES("Hello");
LENGTH(bytes);
# Result: 5
# Kodierung ausdrücklich angegeben
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.
  • "base64" kodiert die UTF-8-Bytes eines Texts. Für Binärdaten, etwa verschlüsselte Bytes, verwenden Sie TOBASE64.

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

# Base64 in UTF-8-Text
DECODE("dXNlcjpwYXNz", "base64");
# Result: "user:pass"
# XML-Entität zurück in ein Zeichen
DECODE("a &lt; b", "xml");
# Result: "a < b"
# Base64-Wert aus JSON dekodieren
DECODE(PARSEJSON(json, "payload"), "base64");

Hinweise — "base64" liefert UTF-8-Text, daher überstehen Bytes über 0x7F es nicht. Dekodieren Sie Binärdaten, etwa verschlüsselte Bytes, mit FROMBASE64.

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

Siehe auch — ENCODE, PARSEJSON.