黑马程序员技术交流社区
标题:
将一个十进制数转换其他进制的数
[打印本页]
作者:
Enhon1992
时间:
2015-6-1 12:28
标题:
将一个十进制数转换其他进制的数
http://bbs.itheima.com/thread-199616-1-1.html
这个帖子里面我介绍了进制转换的另外一种方法 先介绍一下我的思路,就像图片中求8的二进制一样 除2 求、余数。 要是求的是8进制 就除8 求余数。
具体的代码:(注意下面的代码只能实现将一个正数装换其他的进制 ,由于负数在Java里面是这个负数对应的正数的二进制取反+1的形式存储的所以不能用这中思路去解决 ,但是
http://bbs.itheima.com/thread-199616-1-1.html
这个帖子中的方法可以实现负数的进制转换)
//这个方法是用来帮助完成进制的转换的 就是toBinary() toHex() toOctal()三个方法将公共的代码进行了封装
public static String to(int num,int set,StringBuilder resultBuilder,char[] findArr)
{
//如果传进来的数是0就直接返回“0”
if(num==0)
{
return "0";
}
//如果穿件来的数字是负数 就返回null
if(num<0)
{
return null;
}
//如果大于0就进行递归
if(num>0)
{
to( num/set,set,resultBuilder,findArr);
//将每次通过查表法得到的数据 存到resultBuilder中
resultBuilder.append(findArr[num%set]);
}
//将最后的结果转换成字符串返回
return resultBuilder.toString();
}
public static String toBinary(int num)
{
//定义一个字符串容器用来装最后的结果
StringBuilder resultBuilder=new StringBuilder();
//创建一个char数组 利用该数组完成查表操作 并为该数组赋初始值 因为是转换成二进制 最后的结果中只会出现0,1 所以findArr只用赋2个值
char[] findArr=new char[]{'0','1'};
return to(num,2,resultBuilder,findArr);
}
public static String toOctal(int num)
{
//定义一个字符串容器用来装最后的结果
StringBuilder resultBuilder=new StringBuilder();
//创建一个char数组 利用该数组完成查表操作 并为该数组赋初始值 因为是转换成八进制 最后的结果中只会出现0-7 所以findArr只用赋8个值
char[] findArr=new char[]{'0','1','2','3','4','5','6','7'};
return to(num,8,resultBuilder,findArr);
}
public static String toHex(int num)
{
//定义一个字符串容器用来装最后的结果
StringBuilder resultBuilder=new StringBuilder();
//创建一个char数组 利用该数组完成查表操作 并为该数组赋初始值 因为是转换成十六进制 最后的结果中只会出现0-f所以findArr只用赋16个值
char[] findArr=new char[]{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
return to(num,16,resultBuilder,findArr);
}
复制代码
按照上面的思路 我们可以写出将十进制转换成其他进制的方法 比如:转换成4进制
public static String toQuanternary(int num)
{ StringBuilder resultBuilder=new StringBuilder();
char[] findArr=new char[]{'0','1','2','3};
return to(num,4,resultBuilder,findArr);
}
捕获.PNG
(39.89 KB, 下载次数: 6)
下载附件
2015-6-1 12:18 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2