Konverzie dátových typov
Konverzné funkcie skriptu TapHome — TOSTRING s formátovacími reťazcami pre čísla a dátumy, TODOUBLE, TOBYTES a ENCODE / DECODE na escapovanie XML a Base64.
Konverzné funkcie prevádzajú hodnoty na text a späť: čísla a dátumy na formátovaný text, text na čísla a bajty a text do Base64 alebo do tvaru bezpečného pre XML. Konverzia BCD (TOBCD, FROMBCD) je na stránke Bitové operácie a konverzia farieb (HSVTORGB, RGBTOHSV) na stránke Farby.
TOSTRING
TOSTRING prevedie ľubovoľnú hodnotu na text — čísla a dátumy s voliteľným .NET formátovacím reťazcom, bajtové kolekcie a bloby so zadaným kódovaním textu.
| |
| Vstup | Výsledok |
|---|---|
| reťazec | Bez zmeny. |
| číslo | Bez formátu holé číslo s desatinnou bodkou (21.5). S formátom pozrite Formátovacie reťazce. |
datetime | Bez formátu yyyy/MM/dd hh:mm:ss.fff (12-hodinový čas, bez AM a PM); s formátom podľa zadaného vzoru. |
collection<uint8>, blob | Bajty dekódované ako text. Druhý argument je názov kódovania, predvolene iso-8859-1, napríklad "utf-8". |
| iná kolekcia | Chyba Cannot cast collection of ‘X’ to string. |
Prí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 skripte prečíta TOSTRING(RECEIVEDMSG.PAYLOAD, "utf-8") prijatú správu ako text — pozrite RECEIVEDMSG.
Formátovacie reťazce
TOSTRING formátuje čísla a dátumy .NET formátovacími reťazcami a vždy používa desatinnú bodku bez ohľadu na jazykové nastavenia riadiacej jednotky.
| Formát | Vstup | Výstup |
|---|---|---|
"F2" | 231.4721 | "231.47" — pevný počet desatinných miest |
"F0" | 21.5 | "22" — zaokrúhlené na celé číslo |
"0.0" | 7 | "7.0" — vlastný vzor |
"00" | 7 | "07" — úvodné nuly |
"X", "X4" | 255 | "FF", "00FF" — hexadecimálne, veľkými písmenami |
"yyyy-MM-dd" | datetime | "2026-01-15" |
"HH:mm" | datetime | "08:30" — 24-hodinový čas |
"dd.MM.yyyy HH:mm:ss" | datetime | "15.01.2026 08:30:00" |
Poznámky
- Formát, ktorý obsahuje veľké
X, najprv prevedie hodnotu na 32-bitové celé číslo a potom ju vypíše hexadecimálne. - V dátumových formátoch je
HH24-hodinový ahh12-hodinový čas;MMje mesiac ammminúta.
Príklad — časová pečiatka pre záznam alebo HTTP požiadavku
VAR now := NOW();
"Updated " + TOSTRING(now, "dd.MM.yyyy HH:mm");TODOUBLE
TODOUBLE prečíta číslo z textu, ktorý používa desatinnú bodku, a keď text nie je číslo, vráti NaN.
| |
Návratová hodnota — double. NaN, keď sa text nedá prečítať; 0 pre Null.
Poznámky — Text sa vždy číta s desatinnou bodkou. Čiarka sa berie ako oddeľovač tisícov, takže "1,5" dá 15. Keď zdroj používa desatinnú čiarku, najprv ju nahraďte.
Prí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 bajtovej kolekcie (collection<uint8>) v kódovaní iso-8859-1, ak nie je zadané iné.
| |
Poznámky — Staršia dokumentácia uvádzala túto funkciu pod názvom TOBYTEARRAY; taký názov v jazyku neexistuje. Na prípravu dát pre SENDDATA alebo pre UNPACKVALUE použite TOBYTES.
Prí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 pre XML ("xml") alebo ho zakóduje do Base64 ("base64", z UTF-8 bajtov textu).
| |
Poznámky
"xml"nahradí&,',",>a<za&,',",>a<.- Prázdny text vráti prázdny reťazec. Na veľkosti písmen v názve kódovania nezáleží.
"base64"potrebuje Core 2022.2 alebo novší.
Príklad
ENCODE("a<b & c>d", "xml");
# Result: "a<b & c>d"
ENCODE("user:pass", "base64");
# Result: "dXNlcjpwYXNz"Príklad — hlavička HTTP Basic autorizácie
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 opakom ENCODE: zmení XML entity späť na znaky ("xml") alebo dekóduje Base64 na text v UTF-8 ("base64").
| |
Prí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’.