十进制与自定义任意进制转换代码

来源:互联网 发布:再见悲哀 知乎 编辑:程序博客网 时间:2024/05/04 00:56

有时我们在使用十进制的时候,会有长度过长情况。如加密或传输的过程中,日期数据20141230 使用进制转换可以少好几位长度。

因此写了一个十进制与任意自定义进制转换的工具类,可以将十进制转换成任意进制,也可以让任意进制转换回十进制。

希望大家也能用得上。


public class TEST {public static final String CHS_STR = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";//0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/** * @param args */public static void main(String[] args) {System.out.println("value:" + numToStr(20141230) );System.out.println("num:" + strToInt("WU"));String ss = "12345678";String str ="";for(char c : ss.toCharArray()){str += numToStr( (int)c );}System.out.println("str:"+str);}/** * @param i * @return */public static String numToStr(long _int) {if (_int < 0) {return null;}int len = CHS_STR.length();char[] chs = CHS_STR.toCharArray();int n = -1;long intVal = _int;StringBuffer val = new StringBuffer();do {if (intVal < len) {n = (int) intVal;} else {n = (int) (intVal % len);}intVal = (int) Math.floor(intVal / len);val.append(chs[n]);} while (intVal > 0);val = val.reverse();return val.toString();}public static long strToInt(String str) {int len = CHS_STR.length();char[] chs = CHS_STR.toCharArray();StringBuffer sb = new StringBuffer(str.trim());char[] strs = sb.reverse().toString().toCharArray();long num = 0;for (int i = 0; i < strs.length; i++) {int ind = 0;for (char c : chs) {if (strs[i] == c) {break;}ind++;}num += ind * (int) Math.pow(len, i);}return num;}}


0 0
原创粉丝点击