code: public static int[] pack(byte[] buf) {
  		int k, blen = buf.length, ilen = ((buf.length+3) >>> 2);
  		int[] ibuf = new int[ilen];
  		for (int n = 0; n < ilen; n++) {
  			int m = (n+1) << 2;
  			if (m > blen) m = blen;
  			for (k = buf[--m]&0xff; (m & 0x3) != 0; k = (k << 8) | buf[--m]&0xff);
  			ibuf[n] = k;
  		}
  		return ibuf;
  	}
docs: This simply utility method can be used in cases where a byte
  array of seed data is to be used to repeatedly re-seed the
  random number sequence.  By packing the byte array into an
  integer array first, using this method, and then invoking
  setSeed() with that; it removes the need to re-pack the byte
  array each time setSeed() is called.
  <p>
  If the length of the byte array is not a multiple of 4 then
  it is implicitly padded with zeros as necessary.  For example:
  <pre>    byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 }</pre>
  becomes
  <pre>    int[]  { 0x04030201, 0x00000605 }</pre>
  <p>
  Note that this method will not complain if the given byte array
  is empty and will produce an empty integer array, but the
  setSeed() method will throw an exception if the empty integer
  array is passed to it.
  
  @param buf The non-null byte array to be packed.
  @return A non-null integer array of the packed bytes.
  @throws NullPointerException if the given byte array is null.