直接把带转换的字符串换成char数组,根据对应的char在Ascii中的值进行处理,实现代码参考下列(本人写的一个简单demo):
package Test;
public class Tbst {
public static void main(String[] args) {
System.out.println("—————————————执行change()前的buffer—————————————————————————————");
System.out.println("buffer内存:"+Bean.buffer);
String string = Bean.change("12ASD", 32, 4);
System.out.println("—————————————执行change()后的buffer—————————————————————————————");
System.out.println("buffer内存:"+Bean.buffer);
Bean.destroyBuffer(string);
System.out.println("—————————————执行destroyBuffer()后的buffer—————————————————————————————");
System.out.println("buffer内存:"+Bean.buffer);
}
}
class Bean {
static StringBuffer buffer = new StringBuffer();
/**
*
* @param value 需要转换的数
* @param f 转换的数的进制数
* @param t 转换为几进制
* @return 创建的buffer.reverse().toString()
*/
static String change(String value, int f, int t) {
int sum = 0;
char[] cs = value.toCharArray();
for (int i = 0; i < cs.length; i++) {
int c = (int) cs[i];
int b = cs.length-i-1;
if (64 < c && c < 91) {
sum += (c - 65 + 10)*Math.pow(f,b);
} else if ( c > 91) {
sum += (c - 97 + 37)*Math.pow(f,b);
}else if ( c == '+') {
sum += 63*Math.pow(f,b);
}else if ( c == '/') {
sum += 64*Math.pow(f,b);
} else {
sum += (c - 48)*Math.pow(f,b);
}
}
while (sum >= t) {
buffer.append(sum%t);
sum /=t;
}
buffer.append(sum);
return buffer.reverse().toString();
}
/**
* 释放内存
* @param string 清空buffer
*/
static void destroyBuffer(String string){
buffer.delete(0, string.length());
}
}