Start » Filter Reference » System » Binary Data » ReadIntegerFromBuffer

ReadIntegerFromBuffer


Module: FoundationLite

Reads integer value in specified binary format from a byte buffer.

Name Type Range Description
Input value
inBuffer ByteBuffer Source data
Input value
inOffset Integer 0 - Read start position
Input value
inFormat IntegerBinaryFormat Binary serialization format of integer data
Input value
inCheckRange Bool Verify if read data can be stored in resulting Integer type
Output value
outValue Integer Read value
Output value
outOffset Integer Resulting position behind read data

Description

This filter is intended for reading (deserializing) an integer value out of a raw binary data in a ByteBuffer.

Data is read starting at the position provided by the inOffset input (in bytes). This position is than advanced by the size of read data and returned on the outOffset output. This output can be connected to the inOffset input of other byte buffer reading filter when reading consecutive fields of data structures. When data read spans beyond the end of the input buffer an IOError is raised.

Integer value is converted from a binary representation according to the inFormat input value:

  • Signed_8Bit - signed two's complement 8-bit integer, 1 byte long.
  • Signed_16Bit_LittleEndian - signed two's complement 16-bit integer, 2 bytes long with little-endian byte order.
  • Signed_32Bit_LittleEndian - signed two's complement 32-bit integer, 4 bytes long with little-endian byte order.
  • Signed_64Bit_LittleEndian - signed two's complement 64-bit integer, 8 bytes long with little-endian byte order.
  • Unsigned_8Bit - unsigned 8-bit integer, 1 byte long.
  • Unsigned_16Bit_LittleEndian - unsigned 16-bit integer, 2 bytes long with little-endian byte order.
  • Unsigned_64Bit_LittleEndian - unsigned 64-bit integer, 8 bytes long with little-endian byte order.
  • Signed_16Bit_BigEndian - signed two's complement 16-bit integer, 2 bytes long with big-endian byte order.
  • Signed_32Bit_BigEndian - signed two's complement 32-bit integer, 4 bytes long with big-endian byte order.
  • Signed_64Bit_BigEndian - signed two's complement 64-bit integer, 8 bytes long with big-endian byte order.
  • Unsigned_16Bit_BigEndian - unsigned 16-bit integer, 2 bytes long with big-endian byte order.
  • Unsigned_32Bit_BigEndian - unsigned 32-bit integer, 4 bytes long with big-endian byte order.
  • Unsigned_64Bit_BigEndian - unsigned 64-bit integer, 8 bytes long with big-endian byte order.

Supported numeric range of stored value also depends on selected format:

  • Signed_8Bit: -128...127
  • Signed_16Bit_: -32768...32767
  • Signed_32Bit_: -2147483648...2147483647
  • Signed_64Bit_: -9223372036854775808...9223372036854775807 *
  • Unsigned_8Bit: 0...255
  • Unsigned_16Bit_: 0...65535
  • Unsigned_32Bit_: 0...4294967295 *
  • Unsigned_64Bit_: 0...18446744073709551615 *

 *) actual achievable range in the application is also limited by the Integer type

When a value read from the buffer cannot be stored in the data type of the outValue output (which is a signed 32-bit integer) an IOError is raised. inCheckRange input can be set to False to ignore this error (in such situation value is truncated without saturation).

Errors

This filter can throw an exception to report error. Read how to deal with errors in Error Handling.

List of possible exceptions:

Error type Description
DomainError Not supported integer binary format.
IoError Empty byte buffer at input of ReadIntegerFromBuffer.
IoError Reading beyond the end of the byte buffer.
Source data range specified by the inOffset input and the size of integer binary format spans beyond the end of the byte buffer.
IoError The read value is out of supported range.
Value read from the source data cannot be stored in Integer data type. This error can be silenced using the inCheckRange input.

Complexity Level

This filter is available on Basic Complexity Level.

Filter Group

This filter is member of ReadFromBuffer filter group.

See Also

  • WriteIntegerToBuffer – Converts integer value into specified binary representation and writes it to a byte buffer.
  • ReadLongFromBuffer – Reads integer value in specified binary format from a byte buffer.