code: public static long readInt(byte[] data, int start) {
  		long ret = (((long) (data[start] & 0xFF) << 24) & 0xFFFFFFFFL)
  				| ((data[start + 1] & 0xFF) << 16)
  				| ((data[start + 2] & 0xFF) << 8)
  				| ((data[start + 3] & 0xFF) << 0);
  
  		return ret;
  	}
docs: Read an integer (4 bytes) from the array. This is returned as a long as
  we deal with unsigned ints so the value may be higher than the standard
  java int.
  
  @param data
  @param start
  @return the value represent by a long.