常用算法之进制转换
来源:互联网 发布:linux安装ssh 编辑:程序博客网 时间:2024/05/16 01:24
进制转换在实际的编程中会经常使用,尤其是二进制的数。
先看一个可以在16进制内任意转换的算法,实际就是:
(1)10进制转为其它进制,使用辗转相除,逆序取余
(2)其它进制转为十进制,则按权展开
代码:
- public class Base {
- /**
- * 将数转为任意进制
- * @param num
- * @param base
- * @return
- */
- public String baseString(int num,int base){
- if(base > 16){
- throw new RuntimeException("进制数超出范围,base<=16");
- }
- StringBuffer str = new StringBuffer("");
- String digths = "0123456789ABCDEF";
- Stack<Character> s = new Stack<Character>();
- while(num != 0){
- s.push(digths.charAt(num%base));
- num/=base;
- }
- while(!s.isEmpty()){
- str.append(s.pop());
- }
- return str.toString();
- }
- /**
- * 16进制内任意进制转换
- * @param num
- * @param srcBase
- * @param destBase
- * @return
- */
- public String baseNum(String num,int srcBase,int destBase){
- if(srcBase == destBase){
- return num;
- }
- String digths = "0123456789ABCDEF";
- char[] chars = num.toCharArray();
- int len = chars.length;
- if(destBase != 10){//目标进制不是十进制 先转化为十进制
- num = baseNum(num,srcBase,10);
- }else{
- int n = 0;
- for(int i = len - 1; i >=0; i--){
- n+=digths.indexOf(chars[i])*Math.pow(srcBase, len - i - 1);
- }
- return n + "";
- }
- return baseString(Integer.valueOf(num),destBase);
- }
- }
- 常用算法之进制转换
- 常用算法之进制转换
- 简易算法之进制转换
- 1.9算法入门之进制转换
- 进制转换算法
- 转换进制算法
- 进制转换算法
- 进制转换算法
- 算法--进制转换
- 进制转换算法
- 进制转换算法
- 算法:进制转换
- 进制转换算法
- 递归大总结之进制转换算法
- 常用进制转换方法
- JAVA 常用进制 转换
- 常用算法之分治算法
- 常用算法之贪心算法
- HttpWebRequest类的简单封装
- 每天一个linux命令(8):cp 命令
- 关于日期的常用算法
- 排序二叉树的实现 Java版
- 编程面试的10大算法概念汇总
- 常用算法之进制转换
- 每天一个linux命令(9):touch 命令
- 基础算法思想
- MYSQL中SUM字段按条件统计使用IF函数(case)
- 每天一个linux命令(10):cat 命令
- Nexus私服介绍安装及使用
- 先验概率&后验概率
- C语言经典算法100例(一)
- 谷歌把移动平台上的自动语音搜索带到了Chrome中