分享:可以转换任意进制的程序代码

来源:互联网 发布:小猪cms收银系统源码 编辑:程序博客网 时间:2024/06/05 15:24

// 第一次修改别人的程序代码,将原来的只能做固定进制(2.8.16)的转换修改为可以进行任意进制(不大于36进制,仅限于26个英文字母)的代码程序

 /** 原程序
 * @(#)liebiao.java
 *
 * liebiao application
 *
 * @author
 * @version 1.00 2009/3/12
 */

public class liebiao {
 static String p2;

 static String p8;

 static String p16;

 // 以下函数是将十进制num 转换成 base 进制的函数。
 static String zhuan(int num, int base) {
  int i = 0;
  String[] a = new String[20];
  String answer = "";
  do {
   int yushu;
   yushu = num % base;
   num = num / base;
   if (base != 16)
    a[i] = Integer.toString(yushu); // 将yushu值转化为字符串类型
   if (base == 16) {
    if (yushu >= 10)
     switch (yushu) {
     case 10:
      a[i] = "A";
      break;
     case 11:
      a[i] = "B";
      break;
     case 12:
      a[i] = "C";
      break;
     case 13:
      a[i] = "D";
      break;
     case 14:
      a[i] = "E";
      break;
     case 15:
      a[i] = "F";
      break;
     } // 结束switch语句
    if (yushu < 10)
     a[i] = Integer.toString(yushu);
    i++;
   }
  } while (num > 0);// 结束while循环。
  for (; i != 0; i--) {
   answer = answer + a[i - 1];
  }
  return answer;
 }

 public static void main(String[] args) {
  int m = 0;
  System.out
    .println("m" + "/t/t" + "p2" + "/t/t" + "p8" + "/t/t" + "p16");
  for (m = 0; m <= 255; m++) {
   p2 = zhuan(m, 2);
   p8 = zhuan(m, 8);
   p16 = zhuan(m, 16);
   System.out.println(m + "/t/t" + p2 + "/t/t" + p8 + "/t/t" + p16);
  }
 }
}

 

// 如下是修改后的程序。

/**
 * @(#)liebiao.java
 *
 * liebiao application
 *
 * @author
 * @version 1.00 2009/3/12
 */

public class liebiao {
 static String p2;

 static String p8;

 static String p16;

 // 以下函数是将十进制num 转换成 base多进制(不大于36的任意进制)的函数。
 static String zhuan(int num, int base) {
  int i = 0;
  String[] a = new String[20];
  String answer = "";
  String bz = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  do {
   int yushu;
   yushu = num % base;
   num = num / base;
   a[i] = bz.substring(yushu, yushu + 1);
   i++;
  } while (num > 0);
  for (; i != 0; i--) {
   answer = answer + a[i - 1];
  }
  return answer;
 }

 public static void main(String[] args) {
  int m = 0;
//  程序经修改后,可以转换多进制(不大于36的任意进制)的数了,例如:
  int base1=12; 
  int base2=16;
  int base3=36;
  System.out
    .println("m" + "/t/t" + "p"+Integer.toString(base1) + "/t/t" + "p" +Integer.toString(base2)+ "/t/t" + "p"+Integer.toString(base3));
  for (m = 0; m <= 255; m++) {
   p2 = zhuan(m, base1);
   p8 = zhuan(m, base2);
   p16 = zhuan(m, base3);
   System.out.println(m + "/t/t" + p2 + "/t/t" + p8 + "/t/t" + p16);
  }
 }
}