---
title: "Konvertierung von Datentypen"
description: "Konvertierungen in TapHome-Skripten: Zahlen und Datum mit TOSTRING formatieren, Zahlen mit TODOUBLE lesen, Text mit TOBYTES in Bytes umwandeln, Base64 und XML mit ENCODE."
url: "https://taphome.com/de/docs/script/data-type-conversions/"
language: de
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["data-conversion","type-conversion","number-formatting","encoding","scripting-language"]
  questions: ["Wie wandle ich in einem TapHome-Skript einen String in eine Zahl um?","Wie formatiere ich in TapHome eine Zahl als String?","Wie formatiere ich eine Zahl mit zwei Dezimalstellen?","Wie gebe ich eine Zahl hexadezimal aus?","Wie formatiere ich in einem TapHome-Skript ein Datum als Text?","Wie wandle ich einen String in eine Bytesammlung um?","Wie kodiere ich in einem TapHome-Skript Text als Base64?","Wie maskiere ich Sonderzeichen für XML?","Wo sind TOBCD, FROMBCD, RGBTOHSV und HSVTORGB beschrieben?"]
---

# 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: 2026-11-06

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](https://taphome.com/de/docs/script/bit-operations/) beschrieben, die Farbkonvertierung (`HSVTORGB`, `RGBTOHSV`) unter [Farben](https://taphome.com/de/docs/script/colours/).

## TOSTRING

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

```text
TOSTRING(value)
TOSTRING(value, format)
TOSTRING(bytes, encoding)
```

| Eingabe | Ergebnis |
|---|---|
| String | Unverändert. |
| Zahl | Ohne Format die einfache Zahl mit Dezimalpunkt (`21.5`). Mit Format siehe [Formatstrings](https://taphome.com/de/docs/script/data-type-conversions/#format-strings). |
| `datetime` | Ohne Format `yyyy/MM/dd hh:mm:ss.fff` (12-Stunden-Format, ohne AM oder PM); mit Format das angegebene Muster. |
| `collection<uint8>`, Blob | Die Bytes als Text dekodiert. Das zweite Argument ist der Name der Kodierung, standardmäßig `iso-8859-1`, zum Beispiel `"utf-8"`. |
| andere Sammlung | Fehler *Cannot cast collection of 'X' to string*. |

**Beispiel**

```taphome
# 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](https://taphome.com/de/docs/script/listener-scripts/#receivedmsg).

## Formatstrings

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

| Format | Eingabe | Ausgabe |
|---|---|---|
| `"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**

```taphome
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.

```text
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**

```taphome
# 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.

```text
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](https://taphome.com/de/docs/script/packet-parser/#senddata) oder für [UNPACKVALUE](https://taphome.com/de/docs/script/binary-data/#unpackvalue) vorzubereiten.

**Beispiel**

```taphome
# 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).

```text
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](https://taphome.com/de/docs/script/byte-encodings/#tobase64).

**Beispiel**

```taphome
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**

```taphome
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"`).

```text
DECODE(text, coding)
```

**Beispiel**

```taphome
# 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](https://taphome.com/de/docs/script/byte-encodings/#tobase64).

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

**Siehe auch** — [ENCODE](https://taphome.com/de/docs/script/data-type-conversions/#encode), [PARSEJSON](https://taphome.com/de/docs/script/parsing-functions/#parsejson).
