JAVA笔记整理(1):进制转换

JAVA笔记整理(1):进制转换

  • 16.2.28 深圳坪山 多云 18℃
  • 爱吃螺蛳粉的巴赫

摘要:工具类转化函数:关于进制——2/10/16进制转化(Util_transform_scale)— ps:两种方式各有各的好;想快速查询,请看目录!

调用封装类的静态方法

tip1: Java的整型封装类IntegerLong提供toString(int i,int radix)静态方法,可以将一个任意进制的整数转换为其他进制的整数
tip2: 静态方法是属于类的必须由类来调用,而实例方法是属于实例的必须实例化类后(new一下^_-),用类的实例调用。

一、方法介绍

  1. 使用Integer或Long的toBinaryString方法将整数转换为二进制。

  2. 使用Integer或Long的toOctalString方法将整数转换为八进制。

  3. 使用Integer或Long的toHexString方法将整数转换为十六进制。

  4. 使用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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值