1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
import java.util.Scanner;
 
 
public class Practice
{
    public static void main (String[] args)
    {
        Scanner in = new Scanner(System.in);
        String hexa;
        int hexaDemicalResult=0, hexaX=1, i,j;
        
        System.out.printf("\n변환할 16진수를 입력해주세요 : ");
        hexa = in.next();
        
        
        for(i=1;i<=hexa.length();i++){
            if(Character.getNumericValue(hexa.charAt(hexa.length()-i))<=9){
                for(j=2;j<=i;j++){
                    hexaX = hexaX*16;
                }
                hexaDemicalResult = hexaDemicalResult + hexaX*Character.getNumericValue(hexa.charAt(hexa.length()-i));
                
            }
            else if(hexa.charAt(hexa.length()-i)=='a'){
                for(j=2;j<=i;j++){
                    hexaX = hexaX*16;
                }
                hexaDemicalResult = hexaDemicalResult + hexaX*10;
            }
            else if(hexa.charAt(hexa.length()-i)=='b'){
                for(j=2;j<=i;j++){
                    hexaX = hexaX*16;
                }
                hexaDemicalResult = hexaDemicalResult + hexaX*11;
            }
            else if(hexa.charAt(hexa.length()-i)=='c'){
                for(j=2;j<=i;j++){
                    hexaX = hexaX*16;
                }
                hexaDemicalResult = hexaDemicalResult + hexaX*12;
            }
            else if(hexa.charAt(hexa.length()-i)=='d'){
                for(j=2;j<=i;j++){
                    hexaX = hexaX*16;
                }
                hexaDemicalResult = hexaDemicalResult + hexaX*13;
            }
            else if(hexa.charAt(hexa.length()-i)=='e'){
                for(j=2;j<=i;j++){
                    hexaX = hexaX*16;
                }
                hexaDemicalResult = hexaDemicalResult + hexaX*14;
            }
            else if(hexa.charAt(hexa.length()-i)=='f'){
                for(j=2;j<=i;j++){
                    hexaX = hexaX*16;
                }
                hexaDemicalResult = hexaDemicalResult + hexaX*15;
            }
        }
        
        System.out.println("\n변환 된 10진수 값 : "+hexaDemicalResult);
 
    }
}

cs





실행 결과






16진수 기준 2자리수는 정상으로 출력된다.

근데 3자리수부터 이상해짐









한마디로 f5a를 변환해야 하는데 f05a를 변환해버린다.



4자리수 변환해보면










5자리수는 당연히 ABCDE 변환하면 A000B00C0DE 를 변환한 결과가 나옴



프로그램 처음부터 찬찬히 따라가면서 해봐도 어디가 오류인지 찾을 수가 없다 ㅠ

프갤럼들아 시간 되면 도와줘!