CryptUtil
Posted on December 31, 2007 - Filed Under Uncategorized |
最近翻起一年多前在上一家公司写的代码,发现也有不少工具性质的类,于是整理一下都贴出来吧
/** * 2006-6-10 * @author Sparkle */ public class CryptUtil { /** * 将一个数字转换成0-9a-zA-z的62进制 */ public static String encodeLongToString(long i) { if (i == 0) { return "0"; } else if (i < 0) { throw new IllegalArgumentException(); } StringBuffer buffer = new StringBuffer(); while (i > 0) { buffer.insert(0, encodeIntToChar((int) (i % 62))); i /= 62; } return buffer.toString(); } /** * 将0-9a-zA-z的62进制转换成一个数字 */ public static long decodeStringToLong(String s) { long i = 0; for (int index = 0; index < s.length(); index++) { if (index > 0) { i *= 62; } i += decodeCharToInt(s.charAt(index)); } return i; } /** * 将数字作为顺序转换成单位的0-9a-zA-z<br> * 0 -> '0'<br> * 9 -> '9'<br> * 10 -> 'a'<br> * 35 -> 'z'<br> * 36 -> 'A'<br> * 61 -> 'Z' */ private static char encodeIntToChar(int i) { if (i >= 0 && i <= 9) { return (char) (i + 48); } else if (i >= 10 && i <= 35) { return (char) (i + 87); } else if (i >= 36 && i <= 61) { return (char) (i + 29); } else { throw new IllegalArgumentException(); } } /** * 将单位的0-9a-zA-z按顺序转换成数字<br> * '0' -> 0<br> * '9' -> 9<br> * 'a' -> 10<br> * 'z' -> 35<br> * 'A' -> 36<br> * 'Z' -> 61 */ private static int decodeCharToInt(char c) { if (c >= '0' && c <= '9') { return c - 48; } else if (c >= 'a' && c <= 'z') { return c - 87; } else if (c >= 'A' && c <= 'Z') { return c - 29; } else { throw new IllegalArgumentException(); } } }
代码点评:这段代码的作用是,转换出来的字符串会比16进制要短很多
Most Commented Posts
Comments
Leave a Reply