[IntType] [UNSIGNED] INTEGER[n]
An n-byte integer value. Valid values for n are: 1, 2, 3, 4, 5, 6, 7,or 8. If n is not specified for the INTEGER, the default is 8-bytes.
The optional IntType may specify either the BIG_ENDIAN (Sun/UNIX-type, valid only inside a RECORD structure) or LITTLE_ENDIAN (Intel-type) style of integers. These two IntTypes have opposite internal byte orders. If the IntType is missing, the integer is LITTLE_ENDIAN.
If the optional UNSIGNED keyword is missing, the integer is signed. Unsigned integer declarations may be contracted to UNSIGNEDn instead of UNSIGNED INTEGERn.
Size | Signed Values | Unsigned Values |
1-byte | -128 to 127 | 0 to 255 |
2-byte | -32,768 to 32,767 | 0 to 65,535 |
3-byte | -8,388,608 to 8,388,607 | 0 to 16,777,215 |
4-byte | -2,147,483,648 to 2,147,483,647 | 0 to 4,294,967,295 |
5-byte | -549,755,813,888 to 549,755,813,887 | 0 to 1,099,511,627,775 |
6-byte | -140,737,488,355,328 to 140,737,488,355,327 | 0 to 281,474,976,710,655 |
7-byte | -36,028,797,018,963,968 to 36,028,797,018,963,967 | 0 to 72,057,594,037,927,935 |
8-byte | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0 to 18,446,744,073,709,551,615 |
Example:
INTEGER1 MyValue := MAP(MyString = '1' => MyString, '0'); //MyValue is 1 or 0, changing type from string to integer UNSIGNED INTEGER1 MyValue := 255; //max value possible in 1 byte UNSIGNED1 MyValue := 255; //MyValue contains the max value possible in a single byte MyRec := RECORD LITTLE_ENDIAN INTEGER2 MyLittleEndianValue := 1; BIG_ENDIAN INTEGER2 MyBigEndianValue := 1; //the physical byte-order is opposite in these two END