TapHome

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.

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, a konwersja kolorów (HSVTORGB, RGBTOHSV) na stronie Kolory.

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.

1
2
3
TOSTRING(value)
TOSTRING(value, format)
TOSTRING(bytes, encoding)
WejścieWynik
tekstBez zmian.
liczbaBez formatu zwykła liczba z kropką dziesiętną (21.5). Z formatem — zobacz Ciągi formatujące.
datetimeBez formatu yyyy/MM/dd hh:mm:ss.fff (zegar 12-godzinny, bez AM i PM); z formatem według podanego wzorca.
collection<uint8>, blobBajty odczytane jako tekst. Drugi argument to nazwa kodowania, domyślnie iso-8859-1, na przykład "utf-8".
inna kolekcjaBłąd Cannot cast collection of ‘X’ to string.

Przykład

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"

W skrypcie listener TOSTRING(RECEIVEDMSG.PAYLOAD, "utf-8") odczytuje odebraną wiadomość jako tekst — zobacz 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.

FormatWejścieWyjś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

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ą.

1
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

TODOUBLE("232");
# Result: 232
TODOUBLE("-192.332");
# Result: -192.332
TODOUBLE("some text");
# Result: NaN
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.

1
2
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 lub dla UNPACKVALUE.

Przykład

VAR bytes := TOBYTES("Hello");
LENGTH(bytes);
# Result: 5
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).

1
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" wymaga Core 2022.2 lub nowszego.

Przykład

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

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

1
DECODE(text, coding)

Przykład

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

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

Zobacz też — ENCODE, PARSEJSON.