Java 各种进制转换

来源:互联网 发布:jsp和java的关系 编辑:程序博客网 时间:2024/06/06 15:44
publicclass SysConvert { // 定义一个进制转换的类private Stringnumber;privateint a;privateint b;public SysConvert(String number,int a, int b) {this.number = number;this.a = a;this.b = b;}public String getNumber() {String result =""; // 经过数制转换后的结果try {if (a != 10) {// 判断转换前的数制是否是十进制String temp = String.valueOf(convertToTen(a,number)); // 转换成十进制的数result = String.valueOf(tenToNumber(b, temp));// 十进制转换成其它进制} else {result = String.valueOf(tenToNumber(b,number)); // 十进制转换成其它进制}return result;} catch (Exception e) {System.out.print("转换失败,请正确输入!");}returnnull;}publicstatic int convertToTen(int a, String str) {// 其它进制转成十进制double d = 0;// 声明转换后的数值String subString;// 根据字符串的长度循环获得单个元素for (int i = 0; i < str.length(); i++) {subString = str.substring(i, i + 1);// 将字符串按循环截取if (a == 16) {// 判断是否是十六进制subString =sixteenToNumber(subString); // 将字母转换成数字}d += Integer.parseInt(subString)// 返回转换的结果* Math.pow(a, str.length() - i - 1);}return (int) d;}publicstatic String tenToNumber(int a, String str) {// 十进制转成其他进制int current = Integer.parseInt(str);// 将字符转换成整数String opResult ="";// 判断转换后的数制是否是16进制if (a == 16) {// 判断传入的数是否大于16,大于则逢16进一while (current >= a) {opResult +=sixteenNumberToChar(current % a);// 将数字转换成字母current /= a;}if (current != 0)opResult +=sixteenNumberToChar(current);} else {// 判断传入的值是否大于转换后的数制while (current >= a) {opResult += current % a;current /= a;}if (current != 0)opResult += current;}String riResult =""; // 倒序二进制字符串// 根据二进制的转换方式进行循环输出for (int i = opResult.length() - 1; i >= 0; i--) {riResult = riResult + opResult.substring(i, i + 1);}return riResult;}publicstatic String sixteenToNumber(String s) {// 十六进制字母对应数字String num ="";if (s.equals("A") || s.equals("a"))num ="10";elseif (s.equals("B") || s.equals("b"))num ="11";elseif (s.equals("C") || s.equals("c"))num ="12";elseif (s.equals("D") || s.equals("d"))num ="13";elseif (s.equals("E") || s.equals("e"))num ="14";elseif (s.equals("F") || s.equals("f"))num ="15";elsenum = s;return num;}publicstatic String sixteenNumberToChar(int num) {// 十六进制数字对应字母String c ="";if (num == 10)c ="A";elseif (num == 11)c ="B";elseif (num == 12)c ="C";elseif (num == 13)c ="D";elseif (num == 14)c ="E";elseif (num == 15)c ="F";elsec = String.valueOf(num);return c;}}


	
				
		
原创粉丝点击