黑马程序员技术交流社区
标题:
十进制转换成其他进制
[打印本页]
作者:
Enhon1992
时间:
2015-5-27 21:36
标题:
十进制转换成其他进制
先简单介绍一下将十进制转换成其他进制的思路 比如:int i=12 i在计算机中是按照二进制存放的 也就是说它是以 00000000 00000000 00000000 00001100形式存放在计算机中,要是从这个二进制的最右边开始 取n位 ,这n位二进制所表示的十进制数就是12 转换成2^n进制所表示的数的最后一位。比如:将12转换成8进制, 从12的二进制的最右边开始 取3位 既 100 ,100所表示的十进制是4 然后再取 3位 既001,001表示的十进制是1, 所以12用8进制表示就是14 要是想将12转换成16进制 就取4位 表示的十进制是12 在16进制中没有12,12对应的是c 所以12 的16进制就是c
//将十进制转换成二进制的方法
public String toBinary(int num)
{
return to(num,1,1);
}
//将十进制转换成八进制的方法
public String toOctal(int num)
{
return to(num,7,3);
}
//将十进转换成十六进制的方法
public String toHex(int num)
{
return to(num,15,4);
}
//这个方法是用来帮助完成进制的转换的 就是toBinary() toHex() toOctal()三个方法将公共的代码进行了封装
public String to(int num,int set,int set1)
{
//如果num是0直接返回0
if(num==0)
{
return "0";
}
//创建一个char数组 利用该数组完成查表操作 并为该数组赋初始值
char[] findArr=new char[]{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
//再创建一个char数组用来存放最后转换成功的结果 因为被转换的数是int类型的 即是转换成二进制 最后的结果 最多也就可以用32个字符来表示
char[] resultArr=new char[32];
//定义一个指针 用来操作resultArr数组
int pos=resultArr.length;
//定义一个临时标变量记录 记录每一次num 与上set的值
int temp;
//利用查表法完成转换 并把结果存在resultArr数组中
while(num!=0)
{
temp=num&set;
resultArr[--pos]=findArr[temp];
num=num>>>set1;
}
//遍历resultArr数组 将最后的结果存放在一个StringBuilder中
StringBuilder strBuilder=new StringBuilder();
for(int i=pos;i<resultArr.length;++i)
{
strBuilder.append(resultArr[i]);
}
//将strBuilder中的数据转成字符串返回
return strBuilder.toString();
}
复制代码
按照上面的思路 我们可以写出将十进制转换成其他进制的方法 比如:转换成4进制
public String toQuanternary(int num)
{
return to(num,3,2);
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2