---
title: "Převody datových typů"
description: "Převody ve skriptu TapHome: formátování čísel a data přes TOSTRING, čtení čísel přes TODOUBLE, text na bajty přes TOBYTES, Base64 a XML přes ENCODE."
url: "https://taphome.com/cs/docs/script/data-type-conversions/"
language: cs
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["data-conversion","type-conversion","number-formatting","encoding","scripting-language"]
  questions: ["Jak ve skriptu TapHome převést řetězec na číslo?","Jak v TapHome naformátovat číslo jako řetězec?","Jak naformátovat číslo na dvě desetinná místa?","Jak vypsat číslo v šestnáctkové soustavě?","Jak ve skriptu TapHome naformátovat datum jako text?","Jak převést řetězec na pole bajtů?","Jak ve skriptu TapHome zakódovat text do Base64?","Jak escapovat speciální znaky pro XML?","Kde jsou popsány TOBCD, FROMBCD, RGBTOHSV a HSVTORGB?"]
---

# Převody datových typů

Převodní funkce skriptu TapHome — TOSTRING s formátovacími řetězci pro čísla a datum, TODOUBLE, TOBYTES a ENCODE / DECODE pro escapování XML a Base64.

Poslední aktualizace: 2026-11-06

Převodní funkce mění hodnoty na text a zpět: čísla a datum na naformátovaný text, text na čísla a bajty a text do Base64 nebo do tvaru bezpečného pro XML. Převod BCD (`TOBCD`, `FROMBCD`) je na stránce [Bitové operace](https://taphome.com/cs/docs/script/bit-operations/) a převod barev (`HSVTORGB`, `RGBTOHSV`) na stránce [Barvy](https://taphome.com/cs/docs/script/colours/).

## TOSTRING

`TOSTRING` převede libovolnou hodnotu na text — čísla a datum s volitelným formátovacím řetězcem .NET, kolekce bajtů a bloby s kódováním textu.

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

| Vstup | Výsledek |
|---|---|
| řetězec | Beze změny. |
| číslo | Bez formátu prosté číslo s desetinnou tečkou (`21.5`). S formátem viz [Formátovací řetězce](https://taphome.com/cs/docs/script/data-type-conversions/#format-strings). |
| `datetime` | Bez formátu `yyyy/MM/dd hh:mm:ss.fff` (12hodinový čas, bez AM a PM); s formátem zadaný vzor. |
| `collection<uint8>`, blob | Bajty dekódované jako text. Druhý argument je název kódování, výchozí `iso-8859-1`, například `"utf-8"`. |
| jiná kolekce | Chyba *Cannot cast collection of 'X' to string*. |

**Příklad**

```taphome
# hexadecimální text, velká písmena
TOSTRING(192, "X");
# Result: "C0"
TOSTRING(192, "X4");
# Result: "00C0"
# pevný počet desetinných míst
TOSTRING(123.34, "F4");
# Result: "123.3400"
TOSTRING(123.34, "F0");
# Result: "123"
# bajty dekódované jako text
TOSTRING(BYTECOLLECTION("48656c6c6f"));
# Result: "Hello"
TOSTRING(BYTECOLLECTION("48656c6c6f"), "iso-8859-1");
# Result: "Hello"
```

V listener skriptu přečte `TOSTRING(RECEIVEDMSG.PAYLOAD, "utf-8")` přijatou zprávu jako text — viz [RECEIVEDMSG](https://taphome.com/cs/docs/script/listener-scripts/#receivedmsg).

## Formátovací řetězce

`TOSTRING` formátuje čísla a datum formátovacími řetězci .NET a vždy používá desetinnou tečku bez ohledu na jazykové nastavení řídicí jednotky.

| Formát | Vstup | Výstup |
|---|---|---|
| `"F2"` | `231.4721` | `"231.47"` — pevný počet desetinných míst |
| `"F0"` | `21.5` | `"22"` — zaokrouhleno na celé číslo |
| `"0.0"` | `7` | `"7.0"` — vlastní vzor |
| `"00"` | `7` | `"07"` — úvodní nuly |
| `"X"`, `"X4"` | `255` | `"FF"`, `"00FF"` — šestnáctkově, velká písmena |
| `"yyyy-MM-dd"` | `datetime` | `"2026-01-15"` |
| `"HH:mm"` | `datetime` | `"08:30"` — 24hodinový čas |
| `"dd.MM.yyyy HH:mm:ss"` | `datetime` | `"15.01.2026 08:30:00"` |

**Poznámky**

- Formát, který obsahuje velké `X`, nejprve převede hodnotu na 32bitové celé číslo a pak ji vypíše šestnáctkově.
- Ve formátech data je `HH` 24hodinový čas a `hh` 12hodinový čas; `MM` je měsíc a `mm` minuta.

**Příklad — časové razítko pro log nebo požadavek HTTP**

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

## TODOUBLE

`TODOUBLE` přečte číslo z textu s desetinnou tečkou a vrátí `NaN`, když text není číslo.

```text
TODOUBLE(text)
```

**Vrací** — `double`. `NaN`, když text nelze přečíst; `0` pro `Null`.

**Poznámky** — Text se vždy čte s desetinnou tečkou. Čárka se bere jako oddělovač tisíců, takže `"1,5"` dá `15`. Když zdroj používá desetinnou čárku, nejprve ji nahraďte.

**Příklad**

```taphome
# text s desetinnou tečkou na číslo
TODOUBLE("232");
# Result: 232
TODOUBLE("-192.332");
# Result: -192.332
# nečíslo dá NaN
TODOUBLE("some text");
# Result: NaN
# nejdřív nahradit desetinnou čárku tečkou
TODOUBLE(REPLACE("21,5", ",", "."));
# Result: 21.5
```

## TOBYTES

`TOBYTES` zakóduje text do kolekce bajtů (`collection<uint8>`) v kódování `iso-8859-1`, pokud nezadáte jiné.

```text
TOBYTES(text)
TOBYTES(text, encoding)
```

**Poznámky** — Starší dokumentace tuto funkci nazývala `TOBYTEARRAY`; takový název jazyk nezná. Použijte `TOBYTES` k přípravě dat pro [SENDDATA](https://taphome.com/cs/docs/script/packet-parser/#senddata) nebo pro [UNPACKVALUE](https://taphome.com/cs/docs/script/binary-data/#unpackvalue).

**Příklad**

```taphome
# text na bajty, výchozí iso-8859-1
VAR bytes := TOBYTES("Hello");
LENGTH(bytes);
# Result: 5
# kódování uvedené výslovně
VAR euro := TOBYTES("€", "utf-8");
LENGTH(euro);
# Result: 3
```

**Chyby** — *TOBYTES - argument 1 must be a string* (text je `Null`); *TOBYTES - unknown encoding*.

## ENCODE

`ENCODE` escapuje text pro XML (`"xml"`) nebo ho zakóduje do Base64 (`"base64"`, z bajtů textu v UTF-8).

```text
ENCODE(text, coding)
```

**Poznámky**

- `"xml"` nahradí `&`, `'`, `"`, `>` a `<` za `&amp;`, `&apos;`, `&quot;`, `&gt;` a `&lt;`.
- Prázdný text vrátí prázdný řetězec. U názvu kódování nezáleží na velikosti písmen.
- `"base64"` vyžaduje Core 2022.2 nebo novější.
- `"base64"` kóduje bajty textu v UTF-8. Pro binární data, například zašifrované bajty, použijte [TOBASE64](https://taphome.com/cs/docs/script/byte-encodings/#tobase64).

**Příklad**

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

**Příklad — autorizační hlavička HTTP Basic**

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

**Chyby** — *ENCODE Unknown encoding. Valid values are 'xml', 'base64'*.

## DECODE

`DECODE` je opakem `ENCODE`: převede entity XML zpět na znaky (`"xml"`) nebo dekóduje Base64 na text v UTF-8 (`"base64"`).

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

**Příklad**

```taphome
# Base64 na text UTF-8
DECODE("dXNlcjpwYXNz", "base64");
# Result: "user:pass"
# entita XML zpět na znak
DECODE("a &lt; b", "xml");
# Result: "a < b"
# dekódování hodnoty Base64 z JSON
DECODE(PARSEJSON(json, "payload"), "base64");
```

**Poznámky** — `"base64"` vrátí text v UTF-8, takže bajty nad `0x7F` se poškodí. Binární data, například zašifrované bajty, dekódujte funkcí [FROMBASE64](https://taphome.com/cs/docs/script/byte-encodings/#tobase64).

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

**Viz také** — [ENCODE](https://taphome.com/cs/docs/script/data-type-conversions/#encode), [PARSEJSON](https://taphome.com/cs/docs/script/parsing-functions/#parsejson).
