---
title: "Konwersje typów danych"
description: "Konwersje w skryptach TapHome: formatowanie liczb i dat przez TOSTRING, odczyt liczb przez TODOUBLE, tekst na bajty przez TOBYTES, Base64 i XML przez ENCODE."
url: "https://taphome.com/pl/docs/script/data-type-conversions/"
language: pl
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["data-conversion","type-conversion","number-formatting","encoding","scripting-language"]
  questions: ["Jak przekonwertować tekst na liczbę w skrypcie TapHome?","Jak sformatować liczbę jako tekst w TapHome?","Jak sformatować liczbę z dwoma miejscami po przecinku?","Jak wypisać liczbę w zapisie szesnastkowym?","Jak sformatować datę jako tekst w skrypcie TapHome?","Jak przekonwertować tekst na kolekcję bajtów?","Jak zakodować tekst w Base64 w skrypcie TapHome?","Jak zamienić znaki specjalne dla XML?","Gdzie są opisane TOBCD, FROMBCD, RGBTOHSV i HSVTORGB?"]
---

# Konwersje typów danych

Funkcje konwersji w skryptach TapHome — TOSTRING z ciągami formatującymi liczb i dat, TODOUBLE, TOBYTES oraz ENCODE / DECODE dla znaków specjalnych XML i Base64.

Ostatnia aktualizacja: 2026-11-06

Funkcje konwersji zamieniają wartości na tekst i z powrotem: liczby i daty na sformatowany tekst, tekst na liczby i bajty, a tekst na Base64 lub postać bezpieczną dla XML. Konwersja BCD (`TOBCD`, `FROMBCD`) jest opisana na stronie [Operacje bitowe](https://taphome.com/pl/docs/script/bit-operations/), a konwersja kolorów (`HSVTORGB`, `RGBTOHSV`) na stronie [Kolory](https://taphome.com/pl/docs/script/colours/).

## TOSTRING

`TOSTRING` konwertuje dowolną wartość na tekst — liczby i daty z opcjonalnym ciągiem formatującym .NET, kolekcje bajtów i bloby z kodowaniem tekstu.

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

| Wejście | Wynik |
|---|---|
| tekst | Bez zmian. |
| liczba | Bez formatu zwykła liczba z kropką dziesiętną (`21.5`). Z formatem — zobacz [Ciągi formatujące](https://taphome.com/pl/docs/script/data-type-conversions/#format-strings). |
| `datetime` | Bez formatu `yyyy/MM/dd hh:mm:ss.fff` (zegar 12-godzinny, bez AM i PM); z formatem według podanego wzorca. |
| `collection<uint8>`, blob | Bajty odczytane jako tekst. Drugi argument to nazwa kodowania, domyślnie `iso-8859-1`, na przykład `"utf-8"`. |
| inna kolekcja | Błąd *Cannot cast collection of 'X' to string*. |

**Przykład**

```taphome
# tekst szesnastkowy, wielkie litery
TOSTRING(192, "X");
# Result: "C0"
TOSTRING(192, "X4");
# Result: "00C0"
# stała liczba miejsc dziesiętnych
TOSTRING(123.34, "F4");
# Result: "123.3400"
TOSTRING(123.34, "F0");
# Result: "123"
# bajty zdekodowane jako tekst
TOSTRING(BYTECOLLECTION("48656c6c6f"));
# Result: "Hello"
TOSTRING(BYTECOLLECTION("48656c6c6f"), "iso-8859-1");
# Result: "Hello"
```

W skrypcie listener `TOSTRING(RECEIVEDMSG.PAYLOAD, "utf-8")` odczytuje odebraną wiadomość jako tekst — zobacz [RECEIVEDMSG](https://taphome.com/pl/docs/script/listener-scripts/#receivedmsg).

## Ciągi formatujące

`TOSTRING` formatuje liczby i daty ciągami formatującymi .NET i zawsze używa kropki dziesiętnej, niezależnie od ustawień językowych jednostki sterującej.

| Format | Wejście | Wyjście |
|---|---|---|
| `"F2"` | `231.4721` | `"231.47"` — stała liczba miejsc po przecinku |
| `"F0"` | `21.5` | `"22"` — zaokrąglenie do liczby całkowitej |
| `"0.0"` | `7` | `"7.0"` — własny wzorzec |
| `"00"` | `7` | `"07"` — zera wiodące |
| `"X"`, `"X4"` | `255` | `"FF"`, `"00FF"` — szesnastkowo, wielkie litery |
| `"yyyy-MM-dd"` | `datetime` | `"2026-01-15"` |
| `"HH:mm"` | `datetime` | `"08:30"` — zegar 24-godzinny |
| `"dd.MM.yyyy HH:mm:ss"` | `datetime` | `"15.01.2026 08:30:00"` |

**Uwagi**

- Format zawierający wielką literę `X` najpierw konwertuje wartość na 32-bitową liczbę całkowitą, a potem wypisuje ją szesnastkowo.
- W formatach dat `HH` to zegar 24-godzinny, a `hh` zegar 12-godzinny; `MM` to miesiąc, a `mm` minuta.

**Przykład — znacznik czasu do logu lub żądania HTTP**

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

## TODOUBLE

`TODOUBLE` odczytuje liczbę z tekstu z kropką dziesiętną i zwraca `NaN`, gdy tekst nie jest liczbą.

```text
TODOUBLE(text)
```

**Zwraca** — `double`. `NaN`, gdy tekstu nie da się odczytać; `0` dla `Null`.

**Uwagi** — Tekst jest zawsze odczytywany z kropką dziesiętną. Przecinek liczy się jako separator tysięcy, więc `"1,5"` daje `15`. Gdy źródło używa przecinka dziesiętnego, najpierw zamień przecinek.

**Przykład**

```taphome
# tekst z kropką dziesiętną na liczbę
TODOUBLE("232");
# Result: 232
TODOUBLE("-192.332");
# Result: -192.332
# brak liczby daje NaN
TODOUBLE("some text");
# Result: NaN
# najpierw zamiana przecinka na kropkę
TODOUBLE(REPLACE("21,5", ",", "."));
# Result: 21.5
```

## TOBYTES

`TOBYTES` koduje tekst do kolekcji bajtów (`collection<uint8>`), z kodowaniem `iso-8859-1`, chyba że podasz inne.

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

**Uwagi** — Starsza dokumentacja nazywała tę funkcję `TOBYTEARRAY`; taka nazwa w języku nie istnieje. Użyj `TOBYTES`, aby przygotować dane dla [SENDDATA](https://taphome.com/pl/docs/script/packet-parser/#senddata) lub dla [UNPACKVALUE](https://taphome.com/pl/docs/script/binary-data/#unpackvalue).

**Przykład**

```taphome
# tekst na bajty, domyślnie iso-8859-1
VAR bytes := TOBYTES("Hello");
LENGTH(bytes);
# Result: 5
# kodowanie podane wprost
VAR euro := TOBYTES("€", "utf-8");
LENGTH(euro);
# Result: 3
```

**Błędy** — *TOBYTES - argument 1 must be a string* (tekst jest `Null`); *TOBYTES - unknown encoding*.

## ENCODE

`ENCODE` zamienia znaki specjalne tekstu dla XML (`"xml"`) lub koduje go w Base64 (`"base64"`, z bajtów UTF-8 tekstu).

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

**Uwagi**

- `"xml"` zamienia `&`, `'`, `"`, `>` i `<` na `&amp;`, `&apos;`, `&quot;`, `&gt;` i `&lt;`.
- Pusty tekst zwraca pusty ciąg. W nazwie kodowania wielkość liter nie ma znaczenia.
- `"base64"` — wymagana wersja: Core 2022.2 lub nowszy.
- `"base64"` koduje bajty UTF-8 tekstu. Do danych binarnych, na przykład zaszyfrowanych bajtów, użyj [TOBASE64](https://taphome.com/pl/docs/script/byte-encodings/#tobase64).

**Przykład**

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

**Przykład — nagłówek autoryzacji HTTP Basic**

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

**Błędy** — *ENCODE Unknown encoding. Valid values are 'xml', 'base64'*.

## DECODE

`DECODE` odwraca `ENCODE`: zamienia encje XML z powrotem na znaki (`"xml"`) lub dekoduje Base64 na tekst UTF-8 (`"base64"`).

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

**Przykład**

```taphome
# Base64 na tekst UTF-8
DECODE("dXNlcjpwYXNz", "base64");
# Result: "user:pass"
# encja XML z powrotem na znak
DECODE("a &lt; b", "xml");
# Result: "a < b"
# dekodowanie wartości Base64 z JSON
DECODE(PARSEJSON(json, "payload"), "base64");
```

**Uwagi** — `"base64"` zwraca tekst UTF-8, więc bajty powyżej `0x7F` nie zostają zachowane. Dane binarne, na przykład zaszyfrowane bajty, dekoduj funkcją [FROMBASE64](https://taphome.com/pl/docs/script/byte-encodings/#tobase64).

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

**Zobacz też** — [ENCODE](https://taphome.com/pl/docs/script/data-type-conversions/#encode), [PARSEJSON](https://taphome.com/pl/docs/script/parsing-functions/#parsejson).
