TapHome

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.

1
2
3
TOSTRING(value)
TOSTRING(value, format)
TOSTRING(bytes, encoding)
IngressoRisultato
stringInvariato.
numberSenza formato, il numero semplice con il punto decimale (21.5). Con un formato, vedi Stringhe di formato.
datetimeSenza formato yyyy/MM/dd hh:mm:ss.fff (orologio a 12 ore, senza AM o PM); con un formato il modello indicato.
collection<uint8>, blobI byte decodificati come testo. Il secondo argomento è il nome della codifica, iso-8859-1 per impostazione predefinita, ad esempio "utf-8".
altra collezioneErrore 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.

FormatoIngressoUscita
"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 X maiuscola 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 e hh quello a 12 ore; MM è il mese e mm il 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.

1
TODOUBLE(text)

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

TOBYTES

TOBYTES codifica un testo in una collezione di byte (collection<uint8>), usando iso-8859-1 se non viene indicata un’altra codifica.

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

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: 3

Errori — 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).

1
ENCODE(text, coding)

Note

  • "xml" sostituisce &, ', ", > e < con &amp;, &apos;, &quot;, &gt; e &lt;.
  • 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&lt;b &amp; c&gt;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").

1
DECODE(text, coding)

Esempio

DECODE("dXNlcjpwYXNz", "base64");
# Result: "user:pass"
DECODE("a &lt; 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’.

Vedi anche — ENCODE, PARSEJSON.