В данной части кода, в методе toDecimal, есть строчка кода:
value = 16 * value + HEX.indexOf(hexNumber.charAt(i));
Объясните пожалуйста, на основе чего мы пишем такую строчку? Почему мы не можем написать:
for (int i = 0; i < hexNumber.length(); i++) {
            value = (int) (value + HEX.indexOf(hexNumber.charAt(i))*Math.pow(16, i));
        }
Компьютер считает неверное число. Бился башкой почти несколько часов, пытался вспомнить школьный курс информатики, но так и не понял, почему надо писать именно 1-ю строчку