虽然Java提供了各种进制转换的方法,但作为初学者的我还是想自己写一个,下面为具体的代码,思路为将字符串(本质为字符数组)转换为字符数组,然后遍历,进行转换。
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
public class Change {
static List l = new ArrayList(); //
此list用于存储 字符的模
/**
*
* @param s
* 字符串
* @param a1
* 多少进制,一个整数
*/
public static void ab(String s, int a1) { //
需要转换的字符串和转换的进制
char[] a = s.toCharArray(); // 将传进来的字符串转换为char数组
int[] b = new int[a.length];
for (int i = 0; i < b.length; i++) {
b[i] = a[i]; // 将char转换为int
}
for (int i = 0; i < b.length; i++) { //
依次遍历字符数组
l = new ArrayList(); //
每到下一个字符,刷新list,防止结果叠加
while (b[i] != 0) {
int x = b[i] % a1;
if (x >= 10) {
l.add((char) (x - 10 + 'a')); //
通过asc码,写出16进制的特殊字符
}
else {
l.add((x));
} // 将普通数字添加到list集合中
b[i] = b[i] / a1; // 缩小被除数的值,直到为0
}
for (int j = l.size() - 1; j >= 0; j--) { //
通过for循环,倒叙输出list中的模,以得到相应的进制
System.out.print(l.get(j));
}
System.out.println(); //
一个字符输出完之后,换行进行下一个字符的计算
}
}
@Test
public void test() {
Change.ab("我", 10); //
测试方法,通过类名调用封装的方法
}
}