Java实现任意进制转换
2017-08-29 17:44
323 查看
问题:将m进制num转换为n进制 (2 <= m,n <= 62) ?
总体思路是:先将m进制转换为10进制,再将10进制转为n进制。
1、m进制数num转为10进制
从低位到高位按权展开即可。
例如:8进制1356 转为10进制
6*8^0 + 5 * 8^1 + 3 * 8^2 + 1 * 8^3 = 750
2、10进制转为n进制
采用除留取余,逆序排列。
例如:10进制65036转为16进制
65036 除 16,余数 12(C),商4064
4064 除 16,余数 0(0),商254
254 除 16,余数 14(E),商15
15除16,余数 15(F),商0,结束
得16进制为 FE0C
总体思路是:先将m进制转换为10进制,再将10进制转为n进制。
1、m进制数num转为10进制
从低位到高位按权展开即可。
例如:8进制1356 转为10进制
6*8^0 + 5 * 8^1 + 3 * 8^2 + 1 * 8^3 = 750
2、10进制转为n进制
采用除留取余,逆序排列。
例如:10进制65036转为16进制
65036 除 16,余数 12(C),商4064
4064 除 16,余数 0(0),商254
254 除 16,余数 14(E),商15
15除16,余数 15(F),商0,结束
得16进制为 FE0C
import java.util.Scanner; import java.util.Stack; public class Hawei23 { private static char[] array = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" .toCharArray(); private static String numStr = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; //10进制转为其他进制,除留取余,逆序排列 public static String _10_to_N(long number, int N) { Long rest = number; Stack<Character> stack = new Stack<Character>(); StringBuilder result = new StringBuilder(0); while (rest != 0) { stack.add(array[new Long((rest % N)).intValue()]); rest = rest / N; } for (; !stack.isEmpty();) { result.append(stack.pop()); } return result.length() == 0 ? "0":result.toString(); } // 其他进制转为10进制,按权展开 public static long N_to_10(String number, int N) { char ch[] = number.toCharArray(); int len = ch.length; long result = 0; if (N == 10) { return Long.parseLong(number); } long base = 1; for (int i = len - 1; i >= 0; i--) { int index = numStr.indexOf(ch[i]); result += index * base; base *= N; } return result; } public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); while(in.hasNext()){ int src = in.nextInt(); int aim = in.nextInt(); String intStr = in.next(); Long tmp= N_to_10(intStr, src); String tmp2 = _10_to_N(tmp, aim); String newStr = tmp2.replaceFirst("^0*", ""); System.out.println(newStr); } } }
相关文章推荐
- java 实现任意位数相加!
- 原创:字符串和语句逆转的几种方式,可以任意组合,java实现
- 使用java的html解析器jsoup和jQuery实现一个自动重复抓取任意网站页面指定元素的web应用
- Java之查表法实现进制转换
- JAVA实现输出任意大小的等腰三角形
- 使用java的html解析器jsoup和jQuery实现一个自动重复抓取任意网站页面指定元素的web应用
- Java实现任意文件在bmp中的隐藏与导出
- java 实现图片的任意拖动
- [java面试]逻辑推理6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少?java实现
- 使用java的html解析器jsoup和jQuery实现一个自动重复抓取任意网站页面指定元素的web应用
- java中并不是任意多个接口都可以实现多实现
- 用Java Serialization实现任意文件网络传输
- Java实现 输出 任意两个数之间的斐波那契序列
- 计算任意一个图生成树的个数——Kirchhoff 的Matrix Tree 方法Java实现
- 从n个数组中任意选取一个元素的所有组合的Java实现(组合问题)
- [java面试]逻辑推理6 10 18 32 下一个数?编程实现输入任意一个N位置,该数是多少?java实现
- 用Java Serialization实现任意文件网络传输
- 用栈实现任意进制转换
- Java实现任意文件在bmp中的隐藏与导出
- 使用java的html解析器jsoup和jQuery实现一个自动重复抓取任意网站页面指定元素的web应用