进制转换和格式化输出

进制转换

Integer类提供了一些可以进行进制转换的方法

十进制int型变量转转成N进制String变量

int a = 0x1A;
out.println(Integer.toBinaryString(a)); //2进制字符串11010
out.println(Integer.toOctalString(a)); //8进制字符串32
out.println(Integer.toHexString(a)); //16进制字符串1a

如果是负数,这三个方法返回的是补码

int a = -26;
out.println(Integer.toBinaryString(a)); //2进制字符串11111111111111111111111111100110
out.println(Integer.toOctalString(a)); //8进制字符串37777777746
out.println(Integer.toHexString(a)); //16进制字符串ffffffe6

toString方法第二个参数接收需要转成的进制

out.println(Integer.toString(a, 10)); //10进制字符串26
out.println(Integer.toString(a, 2)); //输出10进制字符串11010
out.println(Integer.toString(a, 8)); //输出10进制字符串32
out.println(Integer.toString(a, 16)); //输出10进制字符串1a

如果toString对负数转换,那个得到的不是负数的补码表示,而是将这个负数对应的整数进行进制转换,结果在前面添加负号

out.println(Integer.toString(a, 10)); //-26
out.println(Integer.toString(a, 8)); //-32
out.println(Integer.toString(a, 2)); //-11010

N进制String型变量转成十进制int型变量

int value = Integer.parseInt("11", 16); //16进制表示的"2F"转成10进制的int型值
out.println(value); //47
value = Integer.valueOf("11", 16); //功能同parseInt,实际上在valueOf方法中调用了parseInt函数
out.println(value); //47

N进制String变量转成N进制String变量,可以借助方法先转成10进制

out.println(Integer.toBinaryString(Integer.parseInt("2F", 16)));

浮点数的二进制String类型表示

这里写图片描述

out.println(binaryToString(0.75)); //0.11
private static String binaryToString(double x) {
    if(x >= 1 || x <= 0)
        return null;
    StringBuilder sb = new StringBuilder();
    sb.append("0.");

    double tmp = 0.0;
    while(x > 0){
        if(sb.length() >= 34){
            return null;
        }

        tmp = x * 2;
        if(tmp >= 1){
            x = tmp - 1;
            sb.append("1");
        }else{
            x = tmp;
            sb.append("0");
        }
    }
    return sb.toString();
}

格式化输出

int x = 5;
double y = 1.23;
//输出一般有下面三种方式
out.println("x = " + x + ", y = " + y); //x = 5, y = 1.23
out.format("x = %d, y = %f\n", x, y); //x = 5, y = 1.230000
out.printf("x = %d, y = %f\n", x, y); //x = 5, y = 1.230000
//printf是调用了format函数,两个是等价的。

//也可以利用String的format方法格式化输出的内容
String outStr = String.format("x = %d, y = %f\n", x, y);
out.println(outStr);

具体的转换符说明如下:
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值