The block allows to unpack unsigned integer values on bit level. The number of bits used for decoding is set by parameter width
. The parameter bitOffset
allows to specify the bit at which the decoding starts relative to the preceding block.
If an GetBoolean
, GetInteger
, GetReal
or GetString
block follows an UnpackUnsignedInteger
block the bit position after the UnpackUnsignedInteger
block is aligned to the next byte boundary.
Currently, the pack block only supports Intel-Endianness (little-endian!).
For information about endianness in computing see for example http://en.wikipedia.org/wiki/Endianness
The block is used in example
TestSerialPackagerBitPack_UDP
, depicted below.
GetInteger
block. Assume that we had the memory layout below and would like to unpack the second Integer value. A '.' denotes that the bit is not part of the bits encoding the value (LSB = Least Significant Byte and MSB = Most Significant Byte).
byte 24 byte 25 byte 26 byte 27 byte 28 LSB MSB Relative bit position in Memory: 0-7 8-15 16-23 (24 25 26 27 28 29 30 31) (32 33 34 35 36 37 38 39) (.. Value of bit : 0 1 . . . . . . 0 0 0 0 0 0 0 1
The value of the unpacked second Integer value would be 5 (decimal) == 101 (binary)
.
See also PackUnsignedInteger
.