Start » Filter Reference » System » Binary Data » ReadIntegerArrayFromBuffer
Module: | FoundationLite |
---|
Reads an array of integer values in specified binary format from a byte buffer.
Name | Type | Range | Description | |
---|---|---|---|---|
inBuffer | ByteBuffer | Source data | ||
inOffset | Integer | 0 - | Read start position | |
inArraySize | Integer | 0 - | Number of elements to read into array | |
inFormat | IntegerBinaryFormat | Binary serialization format of integer data | ||
inCheckRange | Bool | Verify if read data can be stored in resulting Integer type | ||
outArray | IntegerArray | Array of read values | ||
outOffset | Integer | Resulting position behind read data |
Description
This filter is intended for reading (deserializing) an array of integer values 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.
This filter reads multiple consecutive integer values in number specified by the inArraySize input and stores them in an array on the outArray output. Every array item 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 output array item (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).
This filter can be used as a more convenient and faster alternative to the connection of ReadBufferArrayFromBuffer and ReadIntegerFromBuffer filters.
Examples
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 ReadIntegerArrayFromBuffer. |
IoError | Reading beyond the end of the byte buffer. Source data range specified by the inOffset input and the size of integers array spans beyond the end of the byte buffer. |
IoError | The read value is out of supported range. Array item 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
- WriteIntegerArrayToBuffer – Converts an array of integer values into specified binary representation and writes it to a byte buffer.
- ReadBufferArrayFromBuffer – Splits chunk of data from byte buffer into array of buffers of equal sizes.
- ReadIntegerFromBuffer – Reads integer value in specified binary format from a byte buffer.