docs: public static byte[] decode(byte[] in, int pos, int length) {
  		if (ArrayUtil.isEmpty(in)) {
  			return in;
  		}
  
  		final IntWrapper offset = new IntWrapper(pos);
  
  		byte sestet0;
  		byte sestet1;
  		byte sestet2;
  		byte sestet3;
  		int maxPos = pos + length - 1;
  		int octetId = 0;
  		byte[] octet = new byte[length * 3 / 4];// over-estimated if non-base64 characters present
  		while (offset.value <= maxPos) {
  			sestet0 = getNextValidDecodeByte(in, offset, maxPos);
  			sestet1 = getNextValidDecodeByte(in, offset, maxPos);
  			sestet2 = getNextValidDecodeByte(in, offset, maxPos);
  			sestet3 = getNextValidDecodeByte(in, offset, maxPos);
  
  			if (PADDING != sestet1) {
  				octet[octetId++] = (byte) ((sestet0 << 2) | (sestet1 >>> 4));
  			}
  			if (PADDING != sestet2) {
  				octet[octetId++] = (byte) (((sestet1 & 0xf) << 4) | (sestet2 >>> 2));
  			}
  			if (PADDING != sestet3) {
  				octet[octetId++] = (byte) (((sestet2 & 3) << 6) | sestet3);
  			}
  		}
  
  		if (octetId == octet.length) {
  			return octet;
  		} else {
  			// 如果有非Base64字符混入，则实际结果比解析的要短，截取之
  			return (byte[]) ArrayUtil.copy(octet, new byte[octetId], octetId);
  		}
  	}