private List<Character> createCharArray(BigInteger value, char[] charSet) {
		List<Character> charArray = new ArrayList<Character>();

		BigInteger csSize = BigInteger.valueOf(charSet.length);

		if (value.compareTo(BigInteger.ZERO) == 0)
			charArray.add(0, charSet[0]);

		else {
			BigInteger[] divmod = value.divideAndRemainder(csSize);
			BigInteger modded = divmod[1];
			BigInteger digit = divmod[0];
			
			
			while (modded.compareTo(BigInteger.ZERO) != 0 || digit.compareTo(BigInteger.ZERO) != 0) {
				if (modded.compareTo(BigInteger.ZERO) == 0) {
					charArray.add(0, charSet[csSize.subtract(BigInteger.ONE).intValue()]);
					value = value.subtract(BigInteger.ONE);
				} else
					charArray.add(0, charSet[modded.subtract(BigInteger.ONE).intValue()]);

				value = value.divide(csSize);
				divmod = value.divideAndRemainder(csSize);
				modded = divmod[1];
				digit = divmod[0];
			}
		}

		return charArray;
	}