JAVA笔记整理(1):进制转换
- 16.2.28 深圳坪山 多云 18℃
- 爱吃螺蛳粉的巴赫
摘要:工具类转化函数:关于进制——2/10/16进制转化(Util_transform_scale)— ps:两种方式各有各的好;想快速查询,请看目录!
调用封装类的静态方法
tip1: Java的整型封装类Integer和Long提供toString(int i,int radix)静态方法,可以将一个任意进制的整数转换为其他进制的整数。
tip2: 静态方法是属于类的必须由类来调用,而实例方法是属于实例的必须实例化类后(new一下^_-),用类的实例调用。
一、方法介绍
使用Integer或Long的toBinaryString方法将整数转换为二进制。
使用Integer或Long的toOctalString方法将整数转换为八进制。
使用Integer或Long的toHexString方法将整数转换为十六进制。
使用Integer或Long的toString(int i)方法可以将其他进制的整数转换为十进制的整数的字符串表示。
二、具体用法
public class SystemConversion {
public static void main(String[] args) {
int iOct = 0567;//八进制数字的声明,在前面加上0(零)
int iTen = 1000;//十进制数字的声明
int iHex = 0xAbcd;//十六进制数字的声明,在前面加上0x(零x),x和abcd不区分大小写
System.out.println("八进制0567装换成二进制:Integer.toString(iOct, 2)="+Integer.toString(iOct, 2));
System.out.println("八进制0567装换成二进制:Integer.toBinaryString(iOct)="+Integer.toBinaryString(iOct));
System.out.println("八进制0567装换成十进制:Integer.toString(iOct, 10)="+Integer.toString(iOct, 10));
System.out.println("八进制0567装换成十进制:Integer.toString(iOct)="+Integer.toString(iOct));
System.out.println("八进制0567装换成十六进制:Integer.toString(iOct, 2)="+Integer.toString(iOct, 16));
System.out.println("八进制0567装换成十六进制:Integer.toHexString(iOct)="+Integer.toHexString(iOct));
//以上输出结果为:
//八进制0567装换成二进制:Integer.toString(iOct, 2)=101110111
//八进制0567装换成二进制:Integer.toBinaryString(iOct)=101110111
//八进制0567装换成十进制:Integer.toString(iOct, 10)=375
//八进制0567装换成十进制:Integer.toString(iOct)=375
//八进制0567装换成十六进制:Integer.toString(iOct, 2)=177
//八进制0567装换成十六进制:Integer.toHexString(iOct)=177
System.out.println();
System.out.println("十进制1000装换成十六进制:Integer.toString(iTen,16)="+Integer.toString(iTen,16));
System.out.println("十进制1000装换成十六进制:Integer.toHexString(iTen)="+Integer.toHexString(iTen));
System.out.println("十进制1000装换成八进制:Integer.toString(iTen,8)="+Integer.toString(iTen,8));
System.out.println("十进制1000装换成八进制:Integer.toOctalString(iTen)="+Integer.toOctalString(iTen));
System.out.println("十进制1000装换成二进制:Integer.toString(iTen,2)="+Integer.toString(iTen,2));
System.out.println("十进制1000装换成二进制:Integer.toBinaryString(iTen)="+Integer.toBinaryString(iTen));
//以上输出结果为:
//十进制1000装换成十六进制:Integer.toString(iTen,16)=3e8
//十进制1000装换成十六进制:Integer.toHexString(iTen)=3e8
//十进制1000装换成八进制:Integer.toString(iTen,8)=1750
//十进制1000装换成八进制:Integer.toOctalString(iTen)=1750
//十进制1000装换成二进制:Integer.toString(iTen,2)=1111101000
//十进制1000装换成二进制:Integer.toBinaryString(iTen)=1111101000
System.out.println();
System.out.println("十六进制0xAbcd装换成十进制:Integer.toString(iHex,10)="+Integer.toString(iHex,10));
System.out.println("十六进制0xAbcd装换成十进制:Integer.toString(iHex)="+Integer.toString(iHex));
System.out.println("十六进制0xAbcd装换成八进制:Integer.toString(iHex,8)="+Integer.toString(iHex,8));
System.out.println("十六进制0xAbcd装换成八进制:Integer.toOctalString(iHex)="+Integer.toOctalString(iHex));
System.out.println("十六进制0xAbcd装换成二进制:Integer.toString(iHex,2)="+Integer.toString(iHex,2));
System.out.println("十六进制0xAbcd装换成二进制:Integer.toBinaryString(iHex)="+Integer.toBinaryString(iHex));
//以上输出结果为:
//十六进制0xAbcd装换成十进制:Integer.toString(iHex,10)=43981
//十六进制0xAbcd装换成十进制:Integer.toString(iHex)=43981
//十六进制0xAbcd装换成八进制:Integer.toString(iHex,8)=125715
//十六进制0xAbcd装换成八进制:Integer.toOctalString(iHex)=125715
//十六进制0xAbcd装换成二进制:Integer.toString(iHex,2)=1010101111001101
//十六进制0xAbcd装换成二进制:Integer.toBinaryString(iHex)=1010101111001101
//十六进制0xAbcd装换成七进制:Integer.toString(iHex,7)=242140
System.out.println();
//还可将任意进制的整数装换成其他任意进制的数字
System.out.println("十六进制0xAbcd装换成七进制:Integer.toString(iHex,7)="+Integer.toString(iHex,7));
}
}
自定义方法
一、将十六进制中的字母转为对应的数字
// 将十六进制中的字母转为对应的数字
public int formatting(String a) {
int i = 0;
for (int u = 0; u < 10; u++) {
if (a.equals(String.valueOf(u))) {
i = u;
}
}
if (a.equals("a")) {
i = 10;
}
if (a.equals("b")) {
i = 11;
}
if (a.equals("c")) {
i = 12;
}
if (a.equals("d")) {
i = 13;
}
if (a.equals("e")) {
i = 14;
}
if (a.equals("f")) {
i = 15;
}
return i;
}
二、将十进制中的数字转为十六进制对应的字母
// 将十进制中的数字转为十六进制对应的字母
public String formattingH(int a) {
String i = String.valueOf(a);
switch (a) {
case 10:
i = "a";
break;
case 11:
i = "b";
break;
case 12:
i = "c";
break;
case 13:
i = "d";
break;
case 14:
i = "e";
break;
case 15:
i = "f";
break;
}
return i;
}
三、任意进制数转为十进制数
// 任意进制数转为十进制数
public String toD(String a, int b) {
int r = 0;
for (int i = 0; i < a.length(); i++) {
r = (int) (r + formatting(a.substring(i, i + 1))
* Math.pow(b, a.length() - i - 1));
}
return String.valueOf(r);
}
四、十六进制转二进制
// 十六进制转二进制
public String HToB(String a) {
String b = Integer.toBinaryString(Integer.valueOf(toD(a, 16)));
return b;
}
五、二进制转十六进制
// 二进制转十六进制
public String BToH(String a) {
// 将二进制转为十进制再从十进制转为十六进制
String b = Integer.toHexString(Integer.valueOf(toD(a, 2)));
return b;
}