Java进制转换

//十进制 ——> 二进制
public static void toB(int a) {
    StringBuffer b = new StringBuffer();//容器
    while(a > 0) {
        b.append(a % 2);//向容器中添加值
        a = a / 2;
    }
    System.out.println(b.reverse()+"B");//reverse()将数值反转(0001——>1000)
}

//十进制 ——> 十六进制
public static void toH(int a) {
    StringBuffer b = new StringBuffer();
    while(a > 0) {
        int s = a % 16;
        if(s > 9) 
            b.append((char)(s-10+'A'));
        else
            b.append(s);
        a = a / 16;
    }
    System.out.println(b.reverse()+"H");
}

/*查表法:十进制 ——> 十六进制(可以算负数)
 * 0 1 2 3 4 5 6 7 8 9 A(10) B(11) C(12) D(13) E(14) F(15) 十六进制元素
 * 将所有的元素临时存储起来,建立对应关系
 * 每一次&15(1111)后的值作为索引去查建立好的表,就可以找到对应的元素
 */
public static void toH_2(int a) {
    StringBuffer b = new StringBuffer();
    char[] s = {'0','1','2','3',
                '4','5','6','7',
                '8','9','A','B',
                'C','D','E','F'};
    //64=4*16,一次与四位,共循环16次
    for(int i=0; i<16; i++ ) {
        int temp = a & 15;
        b.append(s[temp]);
        a = a >>> 4;
    }
    System.out.println(b.reverse()+"H");
}

//查表法:十进制 ——> 二进制
public static void toB_2(int a) {
    char[] s = {'0','1'};
    StringBuffer b = new StringBuffer();
    for(int i=0; i<16; i++ ) {
        int temp = a & 1;
        b.append(s[temp]);
        a = a >>> 1;
    }
    System.out.println(b.reverse()+"B");
}

//查表法:十进制 ——> 八进制
public static void toO_2(int a) {
    StringBuffer b = new StringBuffer();
    char[] s = {'0','1','2','3',
                '4','5','6','7'};
    //64=4*16,一次与四位,共循环16次
    for(int i=0; i<16; i++ ) {
        int temp = a & 7;
        b.append(s[temp]);
        a = a >>> 3;
    }
    System.out.println(b.reverse()+"O");
}

//上述综合
public static void to(int a,int x,int y) {
    StringBuffer b = new StringBuffer();
    char[] s = {'0','1','2','3',
                '4','5','6','7',
                '8','9','A','B',
                'C','D','E','F'};
    //64=4*16,一次与四位,共循环16次
    for(int i=0; i<16; i++ ) {
        int temp = a & x;
        b.append(s[temp]);
        a = a >>> y;
    }
    System.out.println(b.reverse());
}

你可能感兴趣的:(java)