code: public static final byte[] fromHex(final char separator, final String value)
  	{
  		if (value.length() == 0)
  			return new byte[0];
  
  		final String sepString = new String(new char[]{separator});
  
  		final StringTokenizer t = new StringTokenizer(value, sepString, false);
  
  		final byte[] buffer = new byte[t.countTokens()];
  
  		int i = 0;
  		while (t.hasMoreTokens())
  		{
  			final String hex = t.nextToken();
  
  			if (hex.length() == 2)
  				buffer[i++] = (byte) Integer.parseInt(hex, 16);
  			else
  				throw new IllegalArgumentException("Hex section of length " +
  				                                   hex.length() +
  				                                   " encountered inside hex string: " +
  				                                   value +
  				                                   " with separator " +
  				                                   separator);
  		}
  
  		return buffer;
  	}
docs: Decodes a hexidecimal string (optionally with <code>separator</code> characters separating each two-digit pair)<br />
  Multiple runs of the separator will be ignored (eg. AA::BB will result in <code>[0xAA,0xBB]</code>, not
  <code>[0xAA,0x00,0xBB]</code>)<br />
  
  @param separator
  the separator character
  @param value
  
  @return