对IP进行四位加密
由于某种需要,需要对0-255的IP进行四位转换,例如255转为类似“vc52”这样的四个字符的字符串。
public class Base36 {private final static int addition = 100000;private final static byte[] Base36 = {(byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4',(byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9',(byte) 'A', (byte) 'B',(byte) 'C', (byte) 'D', (byte) 'E',(byte) 'F', (byte) 'G', (byte) 'H', (byte) 'I', (byte) 'J', (byte) 'K', (byte) 'L',(byte) 'M', (byte) 'N', (byte) 'O',(byte) 'P', (byte) 'Q',(byte) 'R', (byte) 'S', (byte) 'T',(byte) 'U', (byte) 'V',(byte) 'W', (byte) 'X', (byte) 'Y',(byte) 'Z'};private static int transform(int base){int level = addition;base += level;System.out.println(base);return base;}public static String encode(int dex){dex = transform(dex);StringBuilder code36 = new StringBuilder();int quotient = dex;int remainder = 0;char temp = '0';while((quotient / 36) > 0){remainder = quotient % 36;temp = (char) Base36[remainder];code36.append(temp);quotient = quotient / 36;}if((remainder = quotient % 36) > 0){code36.append((char) Base36[remainder]);}return code36.toString();}public static int decode(String code){int base = 0;int level = 0;for(int i = 0; i < code.length(); i++){level = getIndex((byte) code.charAt(i));if(i == 0){base += level;} else if(i == 1){base += level * 36;} else if(i == 2){base += level * 36*36;} else if(i == 3){base += level * 36*36*36;}}System.out.println(base);base %= addition;return base;}private static int getIndex(byte code){code = change2UpCase(code);int index = 0;for(int i = 0; i < Base36.length; i++){if(Base36[i] == code){index = i;break;}}return index;}private static byte change2UpCase(byte code){if(code >= 'a' && code <= 'z'){code = (byte) (code - 32);}return code;}public static void main(String[] args) {//String result = encode(255);//System.out.println(result);System.out.println(decode("vC52"));}}