Java学习笔记:十进制转换和二进制的转换
2013-08-05 20:47
295 查看
对于禁止的转换,一直是我很头疼的事。这两天特别的看了一些关于进制转换的资料,写了一个类。用于各进制之间的转换,还不完整。
public class ConversionOfNumber { /** 全局变量,获取进制对应值 */ private static char[] NumChar=new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; private ConversionOfNumber(){} /** 十进制转二进制 */ public static String DecimalToBinary(int i) { return DecimalTransition(i,1,1); } /** 十进制转八进制 */ public static String DecimalToOctonary(int i) { return DecimalTransition(i,7,3); } /** 十进制转十六进制 */ public static String DecimalToHexadecimal(int i) { return DecimalTransition(i,15,4); } /** 十进制转换方法 */ private static String DecimalTransition(int i,int system,int offset) { if(i==0) return "0"; char[] arr=new char[32]; int len=arr.length; while(i!=0) { int temp=i&system; arr[--len]=NumChar[temp]; i=i>>>offset; } String num=""; for(;len<arr.length;len++) { num+=arr[len]+""; } return num; } /** 二进制转十进制 */ public static String BinaryToDecimal(String num) { return BinaryTransition(num,1); } /** 二进制转八进制 */ public static String BinaryToToOctonary(String num) { return BinaryTransition(num,3); } /** 二进制转十六禁止 */ public static String BinaryToHexa(String num) { return BinaryTransition(num,4); } /** 二进制转换方法 */ private static String BinaryTransition(String num,int system) { String result=""; int temp=0; int sum=0; for(int i=0;i<num.length();i++) { int c=Integer.parseInt(num.substring(num.length()-i-1,num.length()-i)); sum+=c*Power(2,temp); temp++; if(temp%system==0) { if(system==1) { sum=c*Power(2,i); result=(sum+Integer.parseInt(result==""?"0":result))+""; }else { result=NumChar[sum]+result; } sum=0; temp=0; } } return (sum==0?"":sum)+result; } /** 二进制,八进制,十六进制。转换成十进制 */ private static int TransitionToDecimal(String num,int system) { int sum=0; for(int i=0;i<num.length();i++) { char c=num.charAt(num.length()-i-1); int n=GetDecimalNum(c); sum+=n*Power(system,i); } return sum; } /** 八进制转二进制 */ public static String OctonaryToBinary(String num) { return DecimalTransition(TransitionToDecimal(num,8),1,1); } /** 八进制转十进制 */ public static int OctonaryToDecimal(String num) { return TransitionToDecimal(num,8); } /** 八进制转十六进制 */ public static String OctonaryToHexadecimal(String num) { return DecimalTransition(TransitionToDecimal(num,8),15,4); } /** 十六进制转二进制 */ public static String HexadecimalToBinary(String num) { return DecimalTransition(TransitionToDecimal(num,16),1,1); } /** 十六进制转十进制 */ public static int HexadecimalToDecimal(String num) { return TransitionToDecimal(num,16); } /** 十六进制转八进制 */ public static String HexadecimalToOctonary(String num) { return DecimalTransition(TransitionToDecimal(num,16),7,3); } /** 查找数组索引 */ private static int GetDecimalNum(char c) { for(int i=0;i<NumChar.length;i++) { if(NumChar[i]==c) return i; } return -1; } /** 次方运算 */ private static int Power(int i,int e) { if(e>=0) return Powers(i,e); else return 1/Powers(i,-e);//考虑小数点后面的时候使用 } /** 次方运算 */ private static int Powers(int i,int e) { if(e>0) return i*Power(i,e-1); else return 1; } }
相关文章推荐
- (学习笔记) Java byte[]转二进制字符串,十六进制字符串的相互转换
- 我的Java开发学习之旅------>二进制、八进制、十进制、十六进制之间转换
- java学习笔记--十进制与二进制互转
- 黑马程序员 JAVA基础--关键字,标识符,运算符,二进制的转换的学习笔记
- [Introduction to programming in Java 笔记] 1.3.7 Converting to binary 十进制到二进制的转换
- JAVA学习笔记之二进制、十进制
- java中十进制转换为二进制、八进制和十六进制
- java 从零开始,学习笔记之基础入门<数据类型的转换>(五)
- Java 学习笔记(0x01) 数据类型转换
- JAVA二进制 十进制 八进制等是怎么转换的
- Java学习笔记 实现阿拉伯数字(一亿以内)转换为中文繁体数字
- java学习笔记(五)——继承多态及类的转换问题
- JAVA学习笔记——增强Date与String之间的相互转换
- java实现十进制小数转换二进制
- Java编程:数组的应用(十进制转换成二进制)
- 黑马程序员---java学习笔记之负数的二进制、负数的模
- Java使用bit array实现二进制,十进制,十六进制值之间的转换
- Java实现将十进制转换为二进制
- 黑马程序员----java学习笔记之由int转换成byte
- Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换