牛客网-进制转换-MY

176 阅读1分钟

牛客网-进制转换-MY

代码

    public static int conversion2(String s){
        Map<Character, Integer> map =  new HashMap<>();
        map.put('0', 0);
        map.put('1', 1);
        map.put('2', 2);
        map.put('3', 3);
        map.put('4', 4);
        map.put('5', 5);
        map.put('6', 6);
        map.put('7', 7);
        map.put('8', 8);
        map.put('9', 9);
        map.put('A', 10);
        map.put('B', 11);
        map.put('C', 12);
        map.put('D', 13);
        map.put('E', 14);
        map.put('F', 15);
        map.put('a', 10);
        map.put('b', 11);
        map.put('c', 12);
        map.put('d', 13);
        map.put('e', 14);
        map.put('f', 15);
        char[] chars = s.substring(2).toCharArray();
        return (int) IntStream.range(0,chars.length)
                // 进制计算是从16*0开始的,然后16*1...,故需要再-1
                .mapToDouble(i->map.get(chars[i]) * Math.pow(16,chars.length-i-1))
                .sum();
    }

总结

十六进制转十例子:0x6c=6*16**1+12*16**0=108