La conversione dei dati è una pratica necessaria nella programmazione, naturalmente se il tipo dati di destinazione ha un range inferiore del tipo dati di origine viene effettuato un troncamento del valore. Iniziamo con il dire che in nessun caso errori di range nelle conversioni dato provocano l’arresto della esecuzione. Vediamo caso per caso le varie conversioni:
Tipo BOOL: Le conversioni da qualsiasi tipo verso un BOOL, tornano FALSE se il valore del dato da convertire è 0. Tornano TRUE se il valore del dato da convertire è diverso da 0 (anche < 0).
Tipo SINT/USINT: Le conversioni da qualsiasi tipo verso un USINT, tornano il valore del byte meno significativo del valore da convertire espresso in esadecimale. Esempio il valore 4660 (16#1234) tornerà 52 (16#34), lo stesso vale per i REAL esempio 300.0 (16#012C) tornerà 44 (16#2C). Per il tipo SINT se il valore esadecimale supera 127 il numero sarà negativo.
Tipo INT/UINT: Le conversioni da qualsiasi tipo verso un UINT, tornano il valore dei due bytes meno significativi del valore da convertire espresso in esadecimale. Esempio il valore 305419896 (16#12345678) tornerà 22136 (16#5678), lo stesso vale per i REAL esempio 90000.0 (16#15F90) tornerà 24464 (16#5F90). Per il tipo INT se il valore esadecimale supera 32767 il numero sarà negativo.
Allego la stampa di un programma di test ed il programma sorgente.