dex=16*dex + HEX.indexOf(hexNumber.charAt(i));
Если я правильно понимаю, то здесь мы с помощью метода indexOf находим элемент в константе HEX, которому соответствует буква 'e'.
то есть из данного числа 4e8, мы перебираем все по очереди и смотрим, что чему соответствует. Дак вот, 'e' в константе HEX. так эе и соответствует 'e', дак откуда же тогда появляется число 14? Где и как в программе реализуется этот перевод?
package com.javarush.task.pro.task09.task0907;
import java.util.regex.Pattern;
/*
Шестнадцатеричный конвертер
*/
public class Solution {
private static final String HEX = "0123456789abcdef";
public static void main(String[] args) {
int decimalNumber = 1256;
System.out.println("Десятичное число " + decimalNumber + " равно шестнадцатеричному числу " + toHex(decimalNumber));
String hexNumber = "4e8";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно десятичному числу " + toDecimal(hexNumber));
}
public static String toHex(int decimalNumber) {
if (decimalNumber == 0){
return null;
}
String hex1="";
while (decimalNumber!=0){
hex1= HEX.charAt(decimalNumber%16)+hex1;
decimalNumber/=10;
}
return hex1;
}
public static int toDecimal(String hexNumber) {
if (hexNumber == null){
return 0;
}
int dex = 0;
for (int i = 0; i < hexNumber.length(); i++) {
dex=16*dex + HEX.indexOf(hexNumber.charAt(i));
System.out.println(HEX.indexOf(hexNumber.charAt(i)));
}
return dex;
}
}