Conversioni tra tipi di dati
Funzioni di conversione degli script TapHome — TOSTRING con stringhe di formato per numeri e date, TODOUBLE, TOBYTES ed ENCODE / DECODE per l'escape XML e Base64.
Le funzioni di conversione trasformano i valori in testo e viceversa: numeri e date in testo formattato, testo in numeri e byte, e testo in Base64 o in forma sicura per XML. La conversione BCD (TOBCD, FROMBCD) si trova in Operazioni sui bit e la conversione dei colori (HSVTORGB, RGBTOHSV) in Colori.
TOSTRING
TOSTRING converte qualsiasi valore in testo — numeri e date con una stringa di formato .NET facoltativa, collezioni di byte e blob con una codifica del testo.
| |
| Ingresso | Risultato |
|---|---|
| string | Invariato. |
| number | Senza formato, il numero semplice con il punto decimale (21.5). Con un formato, vedi Stringhe di formato. |
datetime | Senza formato yyyy/MM/dd hh:mm:ss.fff (orologio a 12 ore, senza AM o PM); con un formato il modello indicato. |
collection<uint8>, blob | I byte decodificati come testo. Il secondo argomento è il nome della codifica, iso-8859-1 per impostazione predefinita, ad esempio "utf-8". |
| altra collezione | Errore Cannot cast collection of ‘X’ to string. |
Esempio
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"In uno script listener, TOSTRING(RECEIVEDMSG.PAYLOAD, "utf-8") legge il messaggio ricevuto come testo — vedi RECEIVEDMSG.
Stringhe di formato
TOSTRING formatta numeri e date con stringhe di formato .NET e usa sempre il punto decimale, qualunque siano le impostazioni di lingua dell’unità di controllo.
| Formato | Ingresso | Uscita |
|---|---|---|
"F2" | 231.4721 | "231.47" — numero fisso di decimali |
"F0" | 21.5 | "22" — arrotondato a un numero intero |
"0.0" | 7 | "7.0" — modello personalizzato |
"00" | 7 | "07" — zeri iniziali |
"X", "X4" | 255 | "FF", "00FF" — esadecimale, maiuscolo |
"yyyy-MM-dd" | datetime | "2026-01-15" |
"HH:mm" | datetime | "08:30" — orologio a 24 ore |
"dd.MM.yyyy HH:mm:ss" | datetime | "15.01.2026 08:30:00" |
Note
- Un formato che contiene una
Xmaiuscola converte prima il valore in un numero intero a 32 bit, poi lo stampa in esadecimale. - Nei formati di data
HHè l’orologio a 24 ore ehhquello a 12 ore;MMè il mese emmil minuto.
Esempio — timestamp per un log o una richiesta HTTP
VAR now := NOW();
"Updated " + TOSTRING(now, "dd.MM.yyyy HH:mm");TODOUBLE
TODOUBLE legge un numero da un testo che usa il punto decimale e restituisce NaN quando il testo non è un numero.
| |
Valore restituito — double. NaN quando il testo non può essere letto; 0 per Null.
Note — Il testo viene sempre letto con il punto decimale. Una virgola conta come separatore delle migliaia, quindi "1,5" dà 15. Sostituisci prima la virgola quando la sorgente usa la virgola decimale.
Esempio
TODOUBLE("232");
# Result: 232
TODOUBLE("-192.332");
# Result: -192.332
TODOUBLE("some text");
# Result: NaN
TODOUBLE(REPLACE("21,5", ",", "."));
# Result: 21.5TOBYTES
TOBYTES codifica un testo in una collezione di byte (collection<uint8>), usando iso-8859-1 se non viene indicata un’altra codifica.
| |
Note — La documentazione precedente chiamava questa funzione TOBYTEARRAY; questo nome non esiste nel linguaggio. Usa TOBYTES per preparare i dati per SENDDATA o per UNPACKVALUE.
Esempio
VAR bytes := TOBYTES("Hello");
LENGTH(bytes);
# Result: 5
VAR euro := TOBYTES("€", "utf-8");
LENGTH(euro);
# Result: 3Errori — TOBYTES - argument 1 must be a string (il testo è Null); TOBYTES - unknown encoding.
ENCODE
ENCODE esegue l’escape di un testo per XML ("xml") o lo codifica in Base64 ("base64", dai byte UTF-8 del testo).
| |
Note
"xml"sostituisce&,',",>e<con&,',",>e<.- Un testo vuoto restituisce una stringa vuota. Il nome della codifica non distingue tra maiuscole e minuscole.
"base64"richiede Core 2022.2 o più recente.
Esempio
ENCODE("a<b & c>d", "xml");
# Result: "a<b & c>d"
ENCODE("user:pass", "base64");
# Result: "dXNlcjpwYXNz"Esempio — intestazione di autorizzazione HTTP Basic
VAR auth := "Authorization: Basic " + ENCODE("user:pass", "base64");
VAR response := SENDHTTPREQUEST("/status", "GET", "", auth);Errori — ENCODE Unknown encoding. Valid values are ‘xml’, ‘base64’.
DECODE
DECODE è l’inverso di ENCODE: riconverte le entità XML in caratteri ("xml") o decodifica Base64 in testo UTF-8 ("base64").
| |
Esempio
DECODE("dXNlcjpwYXNz", "base64");
# Result: "user:pass"
DECODE("a < b", "xml");
# Result: "a < b"
DECODE(PARSEJSON(json, "payload"), "base64");Errori — The provided text does not have the base64 format.; DECODE Unknown encoding. Valid values are ‘xml’, ‘base64’.