title: BufferUnderflowException while converting UUID to/from BigInteger
body: <pre><code>public static BigInteger bigInteger(UUID uuid) {
      ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
      bb.putLong(uuid.getMostSignificantBits());
      bb.putLong(uuid.getLeastSignificantBits());
      return new BigInteger(bb.array());
  }
  
  public static UUID uuid(BigInteger value)  {
      byte[] bytes = value.toByteArray();
      ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
      Long high = byteBuffer.getLong();
      Long low = byteBuffer.getLong();
      return new UUID(high, low);
  }
  </code></pre>
  
  <p>Why does the following test fails with <code>java.nio.BufferUnderflowException</code>:</p>
  
  <pre><code>@Test
  public void testUuidBigInteger_underflow() {
      UUID uuidValue = UUID.fromString("ffe11491-04ab-4602-bd85-08716fb4d384");
      BigInteger bigIntegerValue = bigInteger(uuidValue);
      UUID uuidValue2 = uuid(bigIntegerValue);
      assertEquals(uuidValue, uuidValue2);
  }
  </code></pre>