进制转化

进制转换

一、字符类型转成二进制

 //将字符转化成二进制
    public static   String strToBinary(String str){
        char[] strChar=str.toCharArray();
        String result="";
        for(int i=0;i<strChar.length;i++){
            result +=Integer.toBinaryString(strChar[i])+ " "; 	//这里将每个字符转成的二进制用空格隔开,因为当你需要从二进制转成字符的时候用到 
        }
        return result;
    }

二、将十六进制的字符串转成二进制字符串

 //将十六进制的字符串转成二进制字符串
 //如:十六进制字符串为:“011”  转成二进制字符串为:“10001”
    public static  String HexstrToBinary(String str){
        String result ="";
        String charHex = "";
        int charHexLen = 0;
        for(int i=0;i<str.length();i++){
            charHex = Integer.toBinaryString(Integer.parseInt(str.substring(i,i+1),16));
            charHexLen = charHex.length();
            //这里进行补0操作,如:十六进制的6对应的是 0110,但使用Integer.parseInt得到的是 110,所以这里进行了补 0 操作
            for(int j = 0; j < 4 - charHexLen;j++){	
                charHex = "0" +charHex;
            }
            result = result +charHex;
        }
        return result;
    }
 //将十六进制的字符串转成十进制的long类型数字
 //这里采用的是位运算,先将十六进制转成二进制,再通过位运算转成十进制;当然这里耶可以直接通过16进制
 //的位运算直接转成十进制。这里进行计算的时候没有用到 Math类中的pow()函数、也没使用BigDecimal
 //函数;其实我之前是准备使用 pow()函数的,但转成二进制后太长,指数达到了二十多,超过了double的
 //最大取值;multiplier *multiplicand ^(n)
    public static long HexstrToDecimalism(String str){
        String binarystr = HexstrToBinary(str);
        char [] binarys = binarystr.toCharArray();
        long result = 0;
        int multiplier = 0; //乘数
        int multiplicand = 0; //被乘数
        for(int i = 0; i < binarys.length;i++){
            multiplier = binarys[i] - 48;	//这里为什么要减48呢?提示一下看binarys的数据类型
            multiplicand = 2<<(binarys.length-(i+1)-1);
            if(i == (binarys.length-1)){
                multiplicand = 1;
            }
            result = result + multiplier*multiplicand;
        }
        return result;
    }
    

总结:对于进制转换除了十六进制转二进制麻烦了一点,其它的感觉都还行;最最最主要的是不要将数据类型弄混了,这是我刚刚犯过的坑,0101 和“0101” 是不同的,特别要注意,有时候绕晕了就会犯这样的错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值