Integer Conversion

Hint

If the operand value for a type conversion operator is outside of the value range of the target data type, then the result output depends on the processor type and is therefore undefined. This is the case, for example, when a negative operand value is converted from LREAL to the target data type UINT.

Information can be lost when converting from larger data types to smaller data types.

The operators convert an integer value into the specified data types and return this type-converted value. If the number to be converted exceeds the range limit, then the first bytes of the number are ignored.

Call syntax

<variable name> := <integer conversion type operator> ( <integer operand> );

<integer conversion type operator> = <integer data type> _TO_ <data type>
<integer operand> = <variable name> | <literal>

<integer data type> =
__UXINT | __XINT | __XWORD | BIT | BYTE | DINT | DWORD | INT | LINT | LWORD | SINT | UDINT | UINT | ULINT | USINT | WORD

Operators

__UXINT_TO___XINT
__UXINT_TO___XWORD
__UXINT_TO_BIT
__UXINT_TO_BOOL
__UXINT_TO_BYTE
__UXINT_TO_DATE
__UXINT_TO_DINT
__UXINT_TO_DT
__UXINT_TO_DWORD
__UXINT_TO_INT
__UXINT_TO_LDATE
__UXINT_TO_LDT
__UXINT_TO_LINT
__UXINT_TO_LREAL
__UXINT_TO_LTIME
__UXINT_TO_LTOD
__UXINT_TO_LWORD
__UXINT_TO_REAL
__UXINT_TO_SINT
__UXINT_TO_STRING
__UXINT_TO_TIME
__UXINT_TO_TOD
__UXINT_TO_UDINT
__UXINT_TO_UINT
__UXINT_TO_ULINT
__UXINT_TO_USINT
__UXINT_TO_WORD
__UXINT_TO_WSTRING

__XINT_TO___UXINT
__XINT_TO___XWORD
__XINT_TO_BIT
__XINT_TO_BOOL
__XINT_TO_BYTE
__XINT_TO_DATE
__XINT_TO_DINT
__XINT_TO_DT
__XINT_TO_DWORD
__XINT_TO_INT
__XINT_TO_LDATE
__XINT_TO_LDT
__XINT_TO_LINT
__XINT_TO_LREAL
__XINT_TO_LTIME
__XINT_TO_LTOD
__XINT_TO_LWORD
__XINT_TO_REAL
__XINT_TO_SINT
__XINT_TO_STRING
__XINT_TO_TIME
__XINT_TO_TOD
__XINT_TO_UDINT
__XINT_TO_UINT
__XINT_TO_ULINT
__XINT_TO_USINT
__XINT_TO_WORD
__XINT_TO_WSTRING

__XWORD_TO_UXINT
__XWORD_TO_XINT
__XWORD_TO_BIT
__XWORD_TO_BOOL
__XWORD_TO_BYTE
__XWORD_TO_DATE
__XWORD_TO_DINT
__XWORD_TO_DT
__XWORD_TO_DWORD
__XWORD_TO_INT
__XWORD_TO_LDATE
__XWORD_TO_LDT
__XWORD_TO_LINT
__XWORD_TO_LREAL
__XWORD_TO_LTIME
__XWORD_TO_LTOD
__XWORD_TO_LWORD
__XWORD_TO_REAL
__XWORD_TO_SINT
__XWORD_TO_STRING
__XWORD_TO_TIME
__XWORD_TO_TOD
__XWORD_TO_UDINT
__XWORD_TO_UINT
__XWORD_TO_ULINT
__XWORD_TO_USINT
__XWORD_TO_WORD
__XWORD_TO_WSTRING

BIT_TO___UXINT
BIT_TO___XINT
BIT_TO___XWORD
BIT_TO_BOOL
BIT_TO_BYTE
BIT_TO_DATE
BIT_TO_DINT
BIT_TO_DT
BIT_TO_DWORD
BIT_TO_INT
BIT_TO_LDATE
BIT_TO_LDT
BIT_TO_LINT
BIT_TO_LREAL
BIT_TO_LTIME
BIT_TO_LTOD
BIT_TO_LWORD
BIT_TO_REAL
BIT_TO_SINT
BIT_TO_STRING
BIT_TO_TIME
BIT_TO_TOD
BIT_TO_UDINT
BIT_TO_UINT
BIT_TO_ULINT
BIT_TO_USINT
BIT_TO_WORD
BIT_TO_WSTRING

BYTE_TO___UXINT
BYTE_TO___XINT
BYTE_TO___XWORD
BYTE_TO_BOOL
BYTE_TO_BIT
BYTE_TO_DATE
BYTE_TO_DINT
BYTE_TO_DT
BYTE_TO_DWORD
BYTE_TO_INT
BYTE_TO_LDATE
BYTE_TO_LDT
BYTE_TO_LINT
BYTE_TO_LREAL
BYTE_TO_LTIME
BYTE_TO_LTOD
BYTE_TO_LWORD
BYTE_TO_REAL
BYTE_TO_SINT
BYTE_TO_STRING
BYTE_TO_TIME
BYTE_TO_TOD
BYTE_TO_UDINT
BYTE_TO_UINT
BYTE_TO_ULINT
BYTE_TO_USINT
BYTE_TO_WORD
BYTE_TO_WSTRING

DINT_TO___UXINT
DINT_TO___XINT
DINT_TO___XWORD
DINT_TO_BOOL
DINT_TO_BIT
DINT_TO_BYTE
DINT_TO_DATE
DINT_TO_DT
DINT_TO_DWORD
DINT_TO_INT
DINT_TO_LDATE
DINT_TO_LDT
DINT_TO_LINT
DINT_TO_LREAL
DINT_TO_LTIME
DINT_TO_LTOD
DINT_TO_LWORD
DINT_TO_REAL
DINT_TO_SINT
DINT_TO_STRING
DINT_TO_TIME
DINT_TO_TOD
DINT_TO_UDINT
DINT_TO_UINT
DINT_TO_ULINT
DINT_TO_USINT
DINT_TO_WORD
DINT_TO_WSTRING

DWORD_TO___UXINT
DWORD_TO___XINT
DWORD_TO___XWORD
DWORD_TO_BIT
DWORD_TO_BOOL
DWORD_TO_BYTE
DWORD_TO_DATE
DWORD_TO_DINT
DWORD_TO_DT
DWORD_TO_INT
DWORD_TO_LDATE
DWORD_TO_LDT
DWORD_TO_LINT
DWORD_TO_LREAL
DWORD_TO_LTIME
DWORD_TO_LTOD
DWORD_TO_LWORD
DWORD_TO_REAL
DWORD_TO_SINT
DWORD_TO_STRING
DWORD_TO_TIME
DWORD_TO_TOD
DWORD_TO_UDINT
DWORD_TO_UINT
DWORD_TO_ULINT
DWORD_TO_USINT
DWORD_TO_WORD
DWORD_TO_WSTRING

INT_TO___UXINT
INT_TO___XINT
INT_TO___XWORD
INT_TO_BIT
INT_TO_BOOL
INT_TO_BYTE
INT_TO_DATE
INT_TO_DINT
INT_TO_DT
INT_TO_DWORD
INT_TO_LDATE
INT_TO_LDT
INT_TO_LINT
INT_TO_LREAL
INT_TO_LTIME
INT_TO_LTOD
INT_TO_LWORD
INT_TO_REAL
INT_TO_SINT
INT_TO_STRING
INT_TO_TIME
INT_TO_TOD
INT_TO_UDINT
INT_TO_UINT
INT_TO_ULINT
INT_TO_USINT
INT_TO_WORD
INT_TO_WSTRING

LINT_TO___UXINT
LINT_TO___XINT
LINT_TO___XWORD
LINT_TO_BIT
LINT_TO_BOOL
LINT_TO_BYTE
LINT_TO_DATE
LINT_TO_DINT
LINT_TO_DT
LINT_TO_DWORD
LINT_TO_INT
LINT_TO_LDATE
LINT_TO_LDT
LINT_TO_LREAL
LINT_TO_LTIME
LINT_TO_LTOD
LINT_TO_LWORD
LINT_TO_REAL
LINT_TO_SINT
LINT_TO_STRING
LINT_TO_TIME
LINT_TO_TOD
LINT_TO_UDINT
LINT_TO_UINT
LINT_TO_ULINT
LINT_TO_USINT
LINT_TO_WORD
LINT_TO_WSTRING

LWORD_TO___UXINT
LWORD_TO___XINT
LWORD_TO___XWORD
LWORD_TO_BIT
LWORD_TO_BOOL
LWORD_TO_BYTE
LWORD_TO_DATE
LWORD_TO_DINT
LWORD_TO_DT
LWORD_TO_DWORD
LWORD_TO_INT
LWORD_TO_LDATE
LWORD_TO_LDT
LWORD_TO_LINT
LWORD_TO_LREAL
LWORD_TO_LTIME
LWORD_TO_LTOD
LWORD_TO_REAL
LWORD_TO_SINT
LWORD_TO_STRING
LWORD_TO_TIME
LWORD_TO_TOD
LWORD_TO_UDINT
LWORD_TO_UINT
LWORD_TO_ULINT
LWORD_TO_USINT
LWORD_TO_WORD
LWORD_TO_WSTRING

SINT_TO___UXINT
SINT_TO___XINT
SINT_TO___XWORD
SINT_TO_BIT
SINT_TO_BOOL
SINT_TO_BYTE
SINT_TO_DATE
SINT_TO_DINT
SINT_TO_DT
SINT_TO_DWORD
SINT_TO_INT
SINT_TO_LDATE
SINT_TO_LDT
SINT_TO_LINT
SINT_TO_LREAL
SINT_TO_LTIME
SINT_TO_LTOD
SINT_TO_LWORD
SINT_TO_REAL
SINT_TO_STRING
SINT_TO_TIME
SINT_TO_TOD
SINT_TO_UDINT
SINT_TO_UINT
SINT_TO_ULINT
SINT_TO_USINT
SINT_TO_WORD
SINT_TO_WSTRING

UDINT_TO___UXINT
UDINT_TO___XINT
UDINT_TO___XWORD
UDINT_TO_BIT
UDINT_TO_BOOL
UDINT_TO_BYTE
UDINT_TO_DATE
UDINT_TO_DINT
UDINT_TO_DT
UDINT_TO_DWORD
UDINT_TO_INT
UDINT_TO_LDATE
UDINT_TO_LDT
UDINT_TO_LINT
UDINT_TO_LREAL
UDINT_TO_LTIME
UDINT_TO_LTOD
UDINT_TO_LWORD
UDINT_TO_REAL
UDINT_TO_SINT
UDINT_TO_STRING
UDINT_TO_TIME
UDINT_TO_TOD
UDINT_TO_UINT
UDINT_TO_ULINT
UDINT_TO_USINT
UDINT_TO_WORD
UDINT_TO_WSTRING

UINT_TO___UXINT
UINT_TO___XINT
UINT_TO___XWORD
UINT_TO_BIT
UINT_TO_BOOL
UINT_TO_BYTE
UINT_TO_DATE
UINT_TO_DINT
UINT_TO_DT
UINT_TO_DWORD
UINT_TO_INT
UINT_TO_LDATE
UINT_TO_LDT
UINT_TO_LINT
UINT_TO_LREAL
UINT_TO_LTIME
UINT_TO_LTOD
UINT_TO_LWORD
UINT_TO_REAL
UINT_TO_SINT
UINT_TO_STRING
UINT_TO_TIME
UINT_TO_TOD
UINT_TO_UDINT
UINT_TO_ULINT
UINT_TO_USINT
UINT_TO_WORD
UINT_TO_WSTRING

ULINT_TO___UXINT
ULINT_TO___XINT
ULINT_TO___XWORD
ULINT_TO_BIT
ULINT_TO_BOOL
ULINT_TO_BYTE
ULINT_TO_DATE
ULINT_TO_DINT
ULINT_TO_DT
ULINT_TO_DWORD
ULINT_TO_INT
ULINT_TO_LDATE
ULINT_TO_LDT
ULINT_TO_LINT
ULINT_TO_LREAL
ULINT_TO_LTIME
ULINT_TO_LTOD
ULINT_TO_LWORD
ULINT_TO_REAL
ULINT_TO_SINT
ULINT_TO_STRING
ULINT_TO_TIME
ULINT_TO_TOD
ULINT_TO_UDINT
ULINT_TO_UINT
ULINT_TO_USINT
ULINT_TO_WORD
ULINT_TO_WSTRING

USINT_TO___XINT
USINT_TO___XINT
USINT_TO___XWORD
USINT_TO_BIT
USINT_TO_BOOL
USINT_TO_BYTE
USINT_TO_DATE
USINT_TO_DINT
USINT_TO_DT
USINT_TO_DWORD
USINT_TO_INT
USINT_TO_LDATE
USINT_TO_LDT
USINT_TO_LINT
USINT_TO_LREAL
USINT_TO_LTIME
USINT_TO_LTOD
USINT_TO_LWORD
USINT_TO_REAL
USINT_TO_SINT
USINT_TO_STRING
USINT_TO_TIME
USINT_TO_TOD
USINT_TO_UDINT
USINT_TO_UINT
USINT_TO_ULINT
USINT_TO_WORD
USINT_TO_WSTRING

WORD_TO___XINT
WORD_TO___XINT
WORD_TO___XWORD
WORD_TO_BIT
WORD_TO_BOOL
WORD_TO_BYTE
WORD_TO_DATE
WORD_TO_DINT
WORD_TO_DT
WORD_TO_DWORD
WORD_TO_INT
WORD_TO_LDATE
WORD_TO_LDT
WORD_TO_LINT
WORD_TO_LREAL
WORD_TO_LTIME
WORD_TO_LTOD
WORD_TO_LWORD
WORD_TO_REAL
WORD_TO_SINT
WORD_TO_STRING
WORD_TO_TIME
WORD_TO_TOD
WORD_TO_UDINT
WORD_TO_UINT
WORD_TO_ULINT
WORD_TO_USINT
WORD_TO_WSTRING

Converting to a string

Hint

String manipulation when converting to STRING or WSTRING

When converting the type to STRING or WSTRING, the typed value is left-aligned as a character string and truncated if it is too long. Therefore, declare the return variable for the type conversion operators <>_TO_STRING and <>_TO_WSTRING long enough that the character string has enough space without any manipulation.

The operators that convert a value into a character string of type STRING or WSTRING require an operand that matches the target data type.

Example

Examples

ST implementation language

When a larger data type is converted to a smaller data type, the more high-order (front) bytes are truncated. When a smaller data type is converted to a larger data type, the more high-order bytes filled with zeros.

FUNCTION_BLOCK FB_ConvertIntegersFromInt
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
        uxiReturn: __UXINT;
        xiReturn: __XINT;
        xwReturn: __XWORD;
        bitReturn: BIT;
        xReturn: BOOL;
        bReturn: BYTE;
        dateReturn: DATE;
        diReturn: DINT;
        dtReturn: DATE_AND_TIME;
        dwReturn: DWORD;
        liReturn: LINT;
        lrReturn: LREAL;
        lwReturn: LWORD;
        siReturn: SINT;
        sReturn: STRING;
        timReturn: TIME;
        todReturn: TIME_OF_DAY;
        udiReturn: UDINT;
        uiReturn: UINT;
        usiReturn: USINT;
        wReturn: WORD;
        wsReturn: WSTRING;
        uliReturn: ULINT;
END_VAR

uxiReturn := INT_TO___UXINT(127);
xiReturn := INT_TO___XINT(127);
xwReturn := INT_TO___XWORD(127);
bitReturn := INT_TO_BIT(127);
xReturn := INT_TO_BOOL(127);
bReturn := INT_TO_BYTE(127);
dateReturn := INT_TO_DATE(127);
diReturn := INT_TO_DINT(127);
dtReturn := INT_TO_DT(127);
dwReturn := INT_TO_DWORD(127);
liReturn := INT_TO_LINT(127);
lrReturn := INT_TO_LREAL(127);
lwReturn := INT_TO_LWORD(127);
siReturn := INT_TO_SINT(127);
sReturn := INT_TO_STRING(127);
timReturn := INT_TO_TIME(127);
todReturn := INT_TO_TOD(127);
udiReturn := INT_TO_UDINT(127);
uiReturn := INT_TO_UINT(127);
uliReturn := INT_TO_ULINT(127);
usiReturn := INT_TO_USINT(127);
wReturn := INT_TO_WORD(127);
wsReturn := INT_TO_WSTRING(127);

FUNCTION_BLOCK FB_ConvertIntegersToInt
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
        iReturn_uxi: INT;
        iReturn_xi: INT;
        iReturn_xw: INT;
        iReturn_bit: INT;
        iReturn_bool: INT;
        iReturn_b: INT;
        iReturn_d: INT;
        iReturn_di: INT;
        iReturn_dt: INT;
        iReturn_dw: INT;
        iReturn_li: INT;
        iReturn_lr: INT;
        iReturn_lw: INT;
        iReturn_r: INT;
        iReturn_si: INT;
        iReturn_s: INT;
        iReturn_tim: INT;
        iReturn_tod: INT;
        iReturn_tod_0: INT;
        iReturn_udi: INT;
        iReturn_ui: INT;
        iReturn_uli: INT;
        iReturn_usi: INT;
        iReturn_w: INT;
        iReturn_ws: INT;
END_VAR

iReturn_uxi := __UXINT_TO_INT(18446744073709551615);
iReturn_xi := __XINT_TO_INT(9223372036854775807);
iReturn_xw := __XWORD_TO_INT(16#FFFF_FFFF_FFFF_FFFF);
iReturn_bit := BIT_TO_INT(1);
iReturn_bool := BOOL_TO_INT(TRUE);
iReturn_b := BYTE_TO_INT(2#1111_0000);
iReturn_d := DATE_TO_INT(DATE#2019-9-13);
iReturn_di := DINT_TO_INT(2147483647);
iReturn_dt := DT_TO_INT(DT#1979-1-1-00:00:00);
iReturn_dw := DWORD_TO_INT(16#FFFF_FFFF);
// iReturn_i := INT_TO_<>(iData_12);
iReturn_li := LINT_TO_INT(9223372036854775807);
iReturn_lr := LREAL_TO_INT(1.7976931348623157E+30);
iReturn_lw := LWORD_TO_INT(16#FFFF_FFFF_FFFF_FFFF);
iReturn_r := REAL_TO_INT(3.402823E+38);
iReturn_si := SINT_TO_INT(127);
iReturn_s := STRING_TO_INT('127');
iReturn_tim := TIME_TO_INT(T#49D17H2M47S295MS);
iReturn_tod := TOD_TO_INT(TOD#23:59:59.999);
iReturn_tod_0 := TOD_TO_INT(TOD#1:1:1.001);
iReturn_udi := UDINT_TO_INT(4294967295);
iReturn_ui := UINT_TO_INT(65535);
iReturn_uli := ULINT_TO_INT(18446744073709551615);
iReturn_usi := USINT_TO_INT(255);
iReturn_w := WORD_TO_INT(16#FFFF);
iReturn_ws := WSTRING_TO_INT("1234567890");

PROGRAM PLC_PRG
VAR
        fbConvertIntegersFromInt : FB_ConvertIntegersFromInt;
        fbConvertIntegersToInt : FB_ConvertIntegersToInt;
END_VAR

fbConvertIntegersFromInt();
fbConvertIntegersToInt();

FBD implementation language

See also