最近本人学习了关于用java来实现十进制转换二进制、八进制、十六进制的原理,现把代码分享给大家,希望能作为参考。
代码块
代码块语法遵循标准markdown代码,例如
/*
@java进制间的相互转换,此程序用的是查表法,作者:AFCU
*/
class Trans
{
public static void main(string[] args)
{
/*
在主方法中测试
*/
//十进制转二进制结果
toBin(6);
//十进制转八进制结果
toBa(10);
//十进制转十六进制结果
toHex(15);
}
//十进制转换二进制方法
public static void toBin(int num)
{
toTrans(num,1,1);
}
//十进制转换八进制方法
public static void toBa(int num)
{
toTrans(num,7,3);
}
//十进制转换十六进制方法
public static void toHex(int num)
{
toTrans(num,15,4);
}
//定义一个公共方法,用来进制间的相互转换,此方法对于传入的数不做任何限制,正数、负数,都可以算出结果
public static void toTrans(int num, int base, int offset)
{
//首先判断传入的参数是否为0,如果为0,则直接输出,并返回
if(num==0)
{
System.out.println(0);
return;
}
//定义一个原始数组数据
char[] chs = {'0','1','2','3',
'4','5','6','7',
'8','9','A','B',
'C','D','E','F'};
//定义一个数组用来存储转换后的数据,包括二进制数、八进制数、十六进制数
char[] arr = new char[32];
//定义一个变量,用来保存数组的长度
int pos = arr.length;
//开始循环,此过程中用的方法为&方法,向右移位数的方法
while(num!=0)
{
int temp = num & base ;
arr[--pos] = chs[temp];
num = num >>> offset; //将之前的数右移
}
//用循环将数组中的数据打印
for(int x=pos; x<arr.length; x++)
{
System.out.print(arr[x]);
}
}
}
大家一起来学习,共同进步。