For reading unsigned 4 bytes as integer we should use a long variable, because the sign bit is considered as part of the unsigned number.
long result = (((bytes[0] << 8 & bytes[1]) << 8 & bytes[2]) << 8) & bytes[3];
result = result & 0xFFFFFFFF;
This is tested well worked function