Recent Posts
Table of contents
Integers are represented as stop bit encoded entities.
The stop bit decoding process of integer fields is:
- Determine the length by the stop bit algorithm.
- Remove stop bit from each byte.
- Combine 7-bit words (without stop bits) to determine actual integer.
In addition, a nullable field continues with this processing:
- If the value is zero (0), the output value is NULL.
- If the value is positive, subtract 1 from that value to use as the output value.
2.3.6.1.1. Unsigned Integer
Represents unsigned integers using the FAST 7-bit binary encoding.
The example of this decoding process is shown below in Picture 3.18

Picture 3.18 - "Unsigned Integer stop bit decoding"
Decoding code sample of mandatory fields:public int processUInt32Decoding(byte[] buffer, int offset, TemplateFieldValue fieldValue) { // The primari value is only 0 as this is unsigned long value = 0l; while (!PresenceMap.isBitOnPositionSet(buffer[offset], STOP_BIT_POSTION)) { value = (value << 7) | (buffer[offset++]); } value = (value << 7) | (buffer[offset++] & Byte.MAX_VALUE); fieldValue.setFieldValue(value); return offset; } Decoding code sample of nullable fields: public int processUInt32Decoding(byte[] buffer, int offset, TemplateFieldValue fieldValue) { // The primari value is only 0 as this is unsigned long value = 0l; while (!PresenceMap.isBitOnPositionSet(buffer[offset], STOP_BIT_POSTION)) { value = (value << 7) | (buffer[offset++]); } value = (value << 7) | (buffer[offset++] & Byte.MAX_VALUE); if (value == 0) { fieldValue.setFieldValue(null); } else { fieldValue.setFieldValue(value - 1); } return offset; }
2.3.6.1.2. Signed Integer
Used to represent a signed (+/-) integer using the FAST 7-bit binary encoding.
The following diagram illustrates signed integer decoding of a negative number.

Picture 3.19 - "Signed integer stop bit decoding"
Decoding code sample of non-nullable fields: public int processInt32Decoding(byte[] buffer, int offset, TemplateFieldValue fieldValue) { int value = 0; if (PresenceMap.isBitOnPositionSet(buffer[offset], 1)) { value = 0xFFFFFFFF; } while (!PresenceMap.isBitOnPositionSet(buffer[offset], STOP_BIT_POSTION)) { value = (value << 7) | (buffer[offset++]); } value = (value << 7) | (buffer[offset++] & Byte.MAX_VALUE); fieldValue.setFieldValue(value); return offset; } Decoding code sample of nullable fields:public int processInt32Decoding(byte[] buffer, int offset, TemplateFieldValue fieldValue) { int value = 0; if (PresenceMap.isBitOnPositionSet(buffer[offset], 1)) { value = 0xFFFFFFFF; } while (!PresenceMap.isBitOnPositionSet(buffer[offset], STOP_BIT_POSTION)) { value = (value << 7) | (buffer[offset++]); } value = (value << 7) | (buffer[offset++] & Byte.MAX_VALUE); if (value == 0) { fieldValue.setFieldValue(null); } else { if (value > 0) { value -= 1; } fieldValue.setFieldValue(value); } return offset; }