java实现进制之间相互转换

二进制,四进制,八进制,10进制,N进,如何实现他们相互之间的转换功能?本人是一名初学者,对应提供的快速接口产生了兴趣,并自己思考进行了实现,如果方法拙笨欢迎指出,供小弟进行下一步的学习。

思路分析

  • 01

    如何实现进制之间的转换,你可以选择任何一种进制为基准,然后在进行转换,本例主要是以10进制为中间位,根深蒂固的一些问题。一些具有特殊关系的进制之间转换可以,2进制和他的2N进制;例如8进制的12 ,我们可以把他搞成2进制来看待, 0001  0010 ,然后把10010这个就是8进制12转换为2进制的结果。

实现过程

  • 01

    把任意一个进制转换为10进制,这个是相当容易的。例如我有X进制的ABCD 。我把他转换为10进制就等于 A*X³+B*X²+C*X+D;

  • 02

    然后再把10进制转换成你要转换成的进制数,参考下图计算规则:

java实现过程

  • 01

    首先我写的是一个10进制以下的数据直接的转换,这是比较容易理解的,因为10进制以下我们可以直接使用0-9搞定!具体参考下面的代码

  • 02

    如何实现超出10进制的转换,通过思考到以前学习16进制的转换,思考可以使用A,但是本人想如果无限使用if来肯定不现实,所以本人参考了ASCll码 表:

  • 03

    直接把带转换的字符串换成char数组,根据对应的char在Ascii中的值进行处理,实现代码参考下列(本人写的一个简单demo): package Test; public class Tbst { public static void main(String[] args) { System.out.println("—————————————执行change()前的buffer—————————————————————————————"); System.out.println("buffer内存:"+Bean.buffer); String string = Bean.change("12ASD", 32, 4); System.out.println("—————————————执行change()后的buffer—————————————————————————————"); System.out.println("buffer内存:"+Bean.buffer); Bean.destroyBuffer(string); System.out.println("—————————————执行destroyBuffer()后的buffer—————————————————————————————"); System.out.println("buffer内存:"+Bean.buffer); } } class  Bean { static StringBuffer buffer = new StringBuffer(); /** * * @param value 需要转换的数 * @param f     转换的数的进制数 * @param t     转换为几进制 * @return      创建的buffer.reverse().toString() */ static String change(String value, int f, int t) { int sum = 0; char[] cs = value.toCharArray(); for (int i = 0; i < cs.length; i++) { int c = (int) cs[i]; int b = cs.length-i-1; if (64 < c && c < 91) { sum += (c - 65 + 10)*Math.pow(f,b); } else if ( c > 91) { sum += (c - 97 + 37)*Math.pow(f,b); }else if ( c == '+') { sum += 63*Math.pow(f,b); }else if ( c == '/') { sum += 64*Math.pow(f,b); }  else { sum += (c - 48)*Math.pow(f,b); } } while (sum >= t) { buffer.append(sum%t); sum /=t; } buffer.append(sum); return buffer.reverse().toString(); } /** * 释放内存 * @param string  清空buffer */ static  void destroyBuffer(String string){ buffer.delete(0, string.length()); } }

(0)

相关推荐

  • java中进行2、8、16、10进制之间的转换

    我们在编写程序的时候,经常要用到进制之间的转换,但是转换方法很多,我们也不可能做到很准确的记忆,再次就给大家总结一下 java中的进制直接的相互转换,希望对大家有用. java中进行二进制,八进制,十 ...

  • 从二进制与十进制相互转换看进制之间的转换

    突然很想把以前学过的,自己引以为荣的东西(当然都是很简单的东西)整理一下,正好提供了一个很好的平台,那现在就先从进制之间的转换开始吧! 操作方法 01 二进制转为十进制 这是最简单的,将每个位置上的数 ...

  • java 中各进制之间转换方法

    java中十进制.十六进制.二进制.ASCII码是常用的编码方式,在本篇文章中将这些编码的相互转换直接以代码的形式粘贴出来,以供参考. 十六进制字符串转十进制 01 param hex  十六进制字符 ...

  • java编写进制转换器

    进制也就是进位制,是人们规定的一种进位方法. 对于任何一种进制---X进制,就表示某一位置上的数运算时是逢X进一位. 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一 操作方法 01 首先打 ...

  • 怎样通过计算器进行进制之间的换算

    计算机在很多时候都要进行进制之间的转换,现在我们讨论一下系统自带的计算器进行进制转换 操作方法 01 点击开始-->程序-->附件-->计算器,单击左键就可以打开了 02 点击计算器 ...

  • 使用win7自带的计算机进行数字进制转换

    我们平时的生活中接触最多的就是10进制的数字,但是有些时候,因为工作等原因的需要,需要进行各种进制之间的转换.win7自带的计算机就有进制转换的功能,使用起来非常方便. 操作方法 01 首先打开计算机 ...

  • JS 进制转换(2进制、8进制、10进制、16进制)

    javascript 进制转换(2进制.8进制.10进制.16进制之间的转换) 操作方法 01 十进制转其他 02 var x=300; console.log(x); console.log(&qu ...

  • 10进制数转换2进制

    使用window附件自带的计算器,完成10进制2进制8进制16进制之间的相互转换. 操作方法 01 打开计算器.点击开始---所有程序----附件----计算器. 02 切换到程序员计算器.点击查看- ...

  • 怎样把十进制转换成二进制以及进制的互换

    学过计算机基础的小伙伴都知道进制的转换是非常重要的,那么怎样把十进制转换成二进制以及进制之间是怎样互相转换呢? 操作方法 01 打开电脑,在开始菜单的搜索框中输入"计算器",按下回 ...