...
This compliant solution assumes that the values being read are 32-bit unsigned integers. It reads an unsigned integer value into a long variable using the readInt() method. The readInt() method assumes signed values and returns a signed Java int; the return value is converted to a long with sign extension. The code uses a logical-an & operation to mask off the upper 32-bits of the long; this produces a value in the range of a 32-bit unsigned integer, as intended. The mask size should be chosen to match the size of the unsigned integer values being read.
...