将一个字符串转换为任意进制

来源:互联网 发布:linux中makefile文件 编辑:程序博客网 时间:2024/06/06 00:47

虽然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); // 测试方法,通过类名调用封装的方法
}


}

阅读全文
0 0
原创粉丝点击