您的位置:首页 > 编程语言

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

2015-04-29 09:04 447 查看
有时我们在使用十进制的时候,会有长度过长情况。如加密或传输的过程中,日期数据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
);
} 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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: