新手上路,java不同进制转换的字符串

这篇博客记录了作者在学习Java过程中遇到的字符串与二进制、十六进制相互转换的问题。通过一个面试题目的实践,作者探讨了Integer.parseInt()方法,了解到该方法可以根据基数(radix)将字符串解析为整数,基数范围从2到36,适用于二进制和十六进制等转换。通过这个方法,作者实现了将十六进制字符串转换为二进制字符串的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习java的过程中,发现API文档里面例如包装类,String类有很多方法,敢到很头疼,为了学而去学,短时间的学习很难理解透彻和巩固,希望在博客中记录下我java成长的路程,希望能与新手共勉,一起学习,有错误的地方还望指出。

偶然看到的一个题目,让我跃跃欲试,题目是把十六进制的数的字符串转化二进制的数的字符串,二话不说,先把代码撸出来再说。

        String str="aB0";
        StringBuilder sb=new StringBuilder();
        char[] ch=str.toLowerCase().toCharArray();//统一转化为小写
        for(int i=0;i<ch.length;i++)
        {
            switch(ch[i])
            {
                case '0': sb.append("0000");break;
                case '1': sb.append("0001");break;
                case '2': sb.append("0010");break;
                case '3': sb.append("0011");break;
                case '4': sb.append("0100");break;
                case '5': sb.append("0101");break;
                case '6': sb.append("0110");break;
                case '7': sb.append("0111");break;
                case '8': sb.append("1000");break;
                case '9': sb.append("1001");break;
                case 'a': sb.append("1010");break;
                case 'b': sb.append("1011");break;
                case 'c': sb.append("1100");break;
                case 'd': sb.append("1101");break;
                case 'e': sb.append("1110");break;
                case 'f': sb.append("1111");break;
            }
        }
        System.out.println(sb);
    

后来我偶然看到到Integer.parseInt(String s) 的方法(之前只是粗略的带过,不记得了),这个方法的底层调用的是parseInt(String s, int radix) 的方法,其中radix为10,这个方法是根据radix这个基数来将字符串解析成对应的整数,基数的取值范围为2到36,本人估计这2是01,36是0-9a-z,试了试,果然没错。这时候,我找到方法来转化了为int型了,然后顺便看到有toBinaryString(int i)在转化为最后的字符串型,这感觉就省事多了,代码就改为

  	int temp=Integer.parseInt("aB0",16);
        String strnew=Integer.toBinaryString(temp);
        System.out.println(strnew );
值得注意的是,因为parseInt和valueOf感觉差不多,一个返回值是int,一个返回值是Integer,看了下底层,原来valueOf就是返回值就是Integer.valueOf(parseInt(s,radix)),真是省事,说到底就是一个方法,toBinaryString这些底层都调用私有的静态方法toUnsignedString通过传进去的参数进行不同的操作,这些是我那时候突然看到的,感觉大师写的代码看不懂,最多只能知道大概的意思,后来当我以为我做出来的时候,我在网上看到了一个更好的方法(就我知道的来说),原来我们常用的toString,在Integer里面的可以带参数,toString(int i, int radix) API文档说返回用第二个参数指定基数表示的第一个参数的字符串表示形式。

所以最后我的代码改成了

        int temp=Integer.parseInt("aB0",16);
        String str2=Integer.toString(temp, 2);
        System.out.println(str2);
感觉收获颇多,既然有了toString这么强大的方法,为啥还有toBinaryString这些方法的存在呢,还会想一个问题,自己写的代码好,还是知道别人的方法好,公司面试或者做项目是不是也是调用别人的API呢,作为刚刚学完的小菜鸟,感觉学好java还有很长的路要走。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值