Java实现任意进制转换
问题:将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
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 stubScanner 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实现蓝桥杯基础练习十六进制转换八进制-----------拓展进制转换计算器 这个题目我浏览了大量的道友的文章发现十分麻烦,但仍然从其中收益菲薄,所以在这里分享一下我认为最好的代码 impor ...
- 任意进制转换java_Java 任意进制转换(两种方式)
本文提供两种Java实现任意进制转换的方法: 方法一:利用 Integer 实现进制转换 1. Integer类的方法toBinaryString(),Integer.toOctalString(), ...
- c语言进制转换pdf下载,C语言实现任意进制转换.doc
C语言实现任意进制转换.doc includestdio.h#includemath.h#includestring.hvoid dtox(double num,int jz)char xnum100 ...
- 任意进制转换的递归实现
任意进制转换的递归实现 原始链接:http://weolee.spaces.live.com/blog/cns!52FBB34F02E029D9!650.entry www.163online.cn ...
- 在线2-36任意进制转换工具
在线2-36任意进制转换工具 在线2-36任意进制转换工具 本工具支持将数字从在2-36进制中任意进制间相互转换,只支持整数,纯客户端实时计算. https://tooltt.com/hex/
- Java提供的进制转换
Java提供的进制转换 Integer.toHexString(int i); //十进制转成十六进制Integer.toOctalString(int i); //十进制转成八进制Integer.t ...
- 任意进制转换成十进制间互化(ASCII码法)(C/C++)
目录 1 最早的版本(C) 2 针对上面的问题进行改进(C++) 2.1 任意进制转换成十进制(运用字符串) 2.2 十进制转换成任意进制(运用数组逆序存储+取模作除法) 3 ASCII码参考 ...
- Java的API进制转换
利用Java的API进制转换 一.其他进制转十进制 1.使用Integer.parseInt()方法 2.使用Integer.valueOf()方法 二.十进制转换其他进制 1.使用Integer.t ...
- Java的万能进制转换
万能进制转换; public classScaleUtil { public static final int SCALE_DECIMAL= 10; public static final int S ...
最新文章
- SQL学习教程:基础教程高级教程
- 如何采用简化方法进行需求分析
- 2021-04-17 安装Ubuntu18.0.4 的深度学习训练服务器
- 上面两点下面一个三角形_这种胖胖的圆角三角形,在PPT里居然有这么多种画法!...
- ASP.NET基础教程-Web 自定义控件的使用-根据属性值从数据库中提取数据并在页面上自动生成一个表格...
- linux中iptable中端口,Linux如何打开iptables中的端口
- python 中调用shell命令
- centos7利用nexus离线搭建局域网pypi源
- Python实现计数排序
- 如何让mysql配置文件生效_mysql配置文件生效测试
- gradle-学习笔记(2)-多项目构建
- html静态网页制作制作表格,北邮HTML静态网页制作.docx
- java 异或运算符^
- 身为码农,为12306说两句公道话
- html 点击方块旋转,前端每日实战:86# 视频演示如何用纯 CSS 创作一个方块旋转动画...
- java判断excel格式_Java 设置Excel数据验证
- Python3中print函数的换行
- java程序员必读书目推荐
- 2.Enable ADB integration' to be enabled.
- 【转载】亡灵对抗人类的一点战术