class Trans
{
public static void main(String[] args)
{
transToBinary(213);
transToHex(213);
transToOctal(213);
}
public static void transToBinary(int num)
{
System.out.print("-->二进制: ");
transTo(num,1,1);
}
public static void transToOctal(int num)
{
System.out.print("-->八进制: ");
transTo(num,7,3);
}
public static void transToHex(int num)
{
System.out.print("-->十六进制: ");
transTo(num,15,4);
}
public static void transTo( int num,int base ,int offset)
{
//若输入为0,则直接输出0,并返回
if(num == 0)
{
System.out.print("0");
return ;//不可省略,否则下面都将执行
}
char [] chart = {'0', '1','2','3','4','5','6' ,'7','8','9','A','B','C','D','E','F'};//进制表,查询表
char [] chartTo = new char[32];//临时存储转换后的字符,最高时32个(二进制)
int pos = chartTo.length-1;//从最后一个开始存,这样输出时就可以倒置为正常顺序
while (num!=0)//若移位后都是0,则停止取位操作
{
int temp = num & base;//位运算,base进制基数,二进制1,八进制7,十六进制15
chartTo[pos--] = chart[temp];//将转换后的进制表示在表chart中查找 并存入chartTo
num = num>>>offset;//偏移量,二进制1,八进制3,十六进制4
}
//打印
for (int i = pos;i<chartTo.length ;i++ )//从pos开始打印
{
System.out.print(chartTo[i]);
}
System.out.println("");//为了输出好看
}
}
万能进制转换程序模块
最新推荐文章于 2023-03-15 17:10:39 发布