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.
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 a převod barev (HSVTORGB, RGBTOHSV) na stránce Barvy.
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.
| |
| 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. |
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
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"V listener skriptu přečte TOSTRING(RECEIVEDMSG.PAYLOAD, "utf-8") přijatou zprávu jako text — viz 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
HH24hodinový čas ahh12hodinový čas;MMje měsíc ammminuta.
Příklad — časové razítko pro log nebo požadavek HTTP
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.
| |
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
TODOUBLE("232");
# Result: 232
TODOUBLE("-192.332");
# Result: -192.332
TODOUBLE("some text");
# Result: NaN
TODOUBLE(REPLACE("21,5", ",", "."));
# Result: 21.5TOBYTES
TOBYTES zakóduje text do kolekce bajtů (collection<uint8>) v kódování iso-8859-1, pokud nezadáte jiné.
| |
Poznámky — Starší dokumentace tuto funkci nazývala TOBYTEARRAY; takový název jazyk nezná. Použijte TOBYTES k přípravě dat pro SENDDATA nebo pro UNPACKVALUE.
Příklad
VAR bytes := TOBYTES("Hello");
LENGTH(bytes);
# Result: 5
VAR euro := TOBYTES("€", "utf-8");
LENGTH(euro);
# Result: 3Chyby — 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).
| |
Poznámky
"xml"nahradí&,',",>a<za&,',",>a<.- 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ší.
Příklad
ENCODE("a<b & c>d", "xml");
# Result: "a<b & c>d"
ENCODE("user:pass", "base64");
# Result: "dXNlcjpwYXNz"Příklad — autorizační hlavička HTTP Basic
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").
| |
Příklad
DECODE("dXNlcjpwYXNz", "base64");
# Result: "user:pass"
DECODE("a < b", "xml");
# Result: "a < b"
DECODE(PARSEJSON(json, "payload"), "base64");Chyby — The provided text does not have the base64 format.; DECODE Unknown encoding. Valid values are ‘xml’, ‘base64’.