TapHome

Conversii de tipuri de date

Funcțiile de conversie din scripturile TapHome — TOSTRING cu șiruri de format pentru numere și date, TODOUBLE, TOBYTES și ENCODE / DECODE pentru escaparea XML și Base64.

Funcțiile de conversie transformă valorile în text și invers: numerele și datele în text formatat, textul în numere și octeți și textul în Base64 sau într-o formă sigură pentru XML. Conversia BCD (TOBCD, FROMBCD) se află pe pagina Operații pe biți, iar conversia culorilor (HSVTORGB, RGBTOHSV) pe pagina Culori.

TOSTRING

TOSTRING convertește orice valoare în text — numerele și datele cu un șir de format .NET opțional, colecțiile de octeți și blob-urile cu o codificare de text.

1
2
3
TOSTRING(value)
TOSTRING(value, format)
TOSTRING(bytes, encoding)
IntrareRezultat
șir de caractereNeschimbat.
numărFără format, numărul simplu cu punct zecimal (21.5). Cu format, consultați Șiruri de format.
datetimeFără format yyyy/MM/dd hh:mm:ss.fff (ceas de 12 ore, fără AM sau PM); cu format, modelul dat.
collection<uint8>, blobOcteții decodificați ca text. Al doilea argument este numele codificării, implicit iso-8859-1, de exemplu "utf-8".
altă colecțieEroarea Cannot cast collection of ‘X’ to string.

Exemplu

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"

Într-un script listener, TOSTRING(RECEIVEDMSG.PAYLOAD, "utf-8") citește mesajul primit ca text — consultați RECEIVEDMSG.

Șiruri de format

TOSTRING formatează numerele și datele cu șiruri de format .NET și folosește întotdeauna punctul zecimal, indiferent de setările de limbă ale unității de control.

FormatIntrareIeșire
"F2"231.4721"231.47" — număr fix de zecimale
"F0"21.5"22" — rotunjit la un număr întreg
"0.0"7"7.0" — model personalizat
"00"7"07" — zerouri la început
"X", "X4"255"FF", "00FF" — hexazecimal, cu majuscule
"yyyy-MM-dd"datetime"2026-01-15"
"HH:mm"datetime"08:30" — ceas de 24 de ore
"dd.MM.yyyy HH:mm:ss"datetime"15.01.2026 08:30:00"

Observații

  • Un format care conține un X majuscul convertește mai întâi valoarea într-un număr întreg pe 32 de biți, apoi o afișează în hexazecimal.
  • În formatele de dată HH este ceasul de 24 de ore, iar hh ceasul de 12 ore; MM este luna, iar mm minutul.

Exemplu — marcaj de timp pentru un jurnal sau o cerere HTTP

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

TODOUBLE

TODOUBLE citește un număr dintr-un text care folosește punctul zecimal și returnează NaN când textul nu este un număr.

1
TODOUBLE(text)

Returnează — double. NaN când textul nu poate fi citit; 0 pentru Null.

Observații — Textul se citește întotdeauna cu punct zecimal. Virgula contează ca separator de mii, așa că "1,5" dă 15. Când sursa folosește virgula zecimală, înlocuiți mai întâi virgula.

Exemplu

TODOUBLE("232");
# Result: 232
TODOUBLE("-192.332");
# Result: -192.332
TODOUBLE("some text");
# Result: NaN
TODOUBLE(REPLACE("21,5", ",", "."));
# Result: 21.5

TOBYTES

TOBYTES codifică textul într-o colecție de octeți (collection<uint8>), cu iso-8859-1, dacă nu se specifică altă codificare.

1
2
TOBYTES(text)
TOBYTES(text, encoding)

Observații — Documentația mai veche numea această funcție TOBYTEARRAY; acest nume nu există în limbaj. Folosiți TOBYTES pentru a pregăti date pentru SENDDATA sau pentru UNPACKVALUE.

Exemplu

VAR bytes := TOBYTES("Hello");
LENGTH(bytes);
# Result: 5
VAR euro := TOBYTES("€", "utf-8");
LENGTH(euro);
# Result: 3

Erori — TOBYTES - argument 1 must be a string (textul este Null); TOBYTES - unknown encoding.

ENCODE

ENCODE escapează textul pentru XML ("xml") sau îl codifică în Base64 ("base64", din octeții UTF-8 ai textului).

1
ENCODE(text, coding)

Observații

  • "xml" înlocuiește &, ', ", > și < cu &amp;, &apos;, &quot;, &gt; și &lt;.
  • Un text gol returnează un șir gol. Numele codificării nu ține cont de majuscule și minuscule.
  • "base64" necesită Core 2022.2 sau mai nou.
  • "base64" codifică octeții UTF-8 ai textului. Pentru date binare, cum sunt octeții criptați, folosiți TOBASE64.

Exemplu

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

Exemplu — antet de autorizare HTTP Basic

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

Erori — ENCODE Unknown encoding. Valid values are ‘xml’, ‘base64’.

DECODE

DECODE inversează ENCODE: transformă entitățile XML înapoi în caractere ("xml") sau decodifică Base64 în text UTF-8 ("base64").

1
DECODE(text, coding)

Exemplu

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

Observații — "base64" returnează text UTF-8, așa că octeții peste 0x7F nu rămân intacți. Decodificați datele binare, cum sunt octeții criptați, cu FROMBASE64.

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

Consultați și — ENCODE, PARSEJSON.