Android 进制转换及超长数据的进制bina、hex、dec二进制、十进制、16进之间的转换 java.lang.NumberFormatException: For input string:

用Integer.parseInt(hex, 16)转换非常长的数据时,会报错;
原因是因为:Integer在32位的编译环境下,存储长度为32位。即-231~231-1; 即-2,147,483,648~2,147,483,647,此时将Integer换成BigInteger类型,问题解决

解决长数据类型之间的进制转换问题:

String a=new BigInteger(hex,16).toString(2);
//这表示16进制的hex字符串,转换为2进制的字符串;依葫芦画瓢,其他的进制转换也是一样;

进制转换
    public static String toBinary(String str){
        //把字符串转成字符数组
        char[] strChar=str.toCharArray();
        String result="";
        for(int i=0;i<strChar.length;i++){
            //toBinaryString(int i)返回变量的二进制表示的字符串
            //toHexString(int i) 八进制
            //toOctalString(int i) 十六进制
            result +=Integer.toBinaryString(strChar[i]);
//            result +=Integer.toBinaryString(strChar[i]);
        }
        return result;
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jian11058

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值