2013-10-14 6 views
0

저는 8 진수로 변환 한 다음 16 진수로 변환하는 프로그램을 코딩하려고했지만 잘못된 대답을 얻고 있습니다. 다음과 같이 실제로 변환하는 코드는 다음과 같습니다8 진수를 16 진수로 잘못 변환합니다.

user_input=user_input.replace("0", "00"); 
    user_input=user_input.replace("1", "01"); 
    user_input=user_input.replace("2", "10"); 
    user_input=user_input.replace("3", "11"); 
    user_input=user_input.replace("4", "100"); 
    user_input=user_input.replace("5", "101"); 
    user_input=user_input.replace("6", "110"); 
    user_input=user_input.replace("7", "111"); 

    if (!(user_input.length()-1 % 4 ==0)){ 
     user_input = "00" + user_input; } 


    user_input=user_input.replace("0000", "0"); 
    user_input=user_input.replace("0001", "1"); 
    user_input=user_input.replace("0010", "2"); 
    user_input=user_input.replace("0011", "3"); 
    user_input=user_input.replace("0100", "4"); 
    user_input=user_input.replace("0101", "5"); 
    user_input=user_input.replace("0110", "6"); 
    user_input=user_input.replace("0111", "7"); 
    user_input=user_input.replace("1000", "8"); 
    user_input=user_input.replace("1001", "9"); 
    user_input=user_input.replace("1010", "A"); 
    user_input=user_input.replace("1011", "B"); 
    user_input=user_input.replace("1100", "C"); 
    user_input=user_input.replace("1101", "D"); 
    user_input=user_input.replace("1110", "E"); 
    user_input=user_input.replace("1111", "F"); 

내 키 (22F)로 변환한다 숫자 1057을 사용하지만, 내가 뭘하는지에 대해 어떤 생각 12F

의 출력을 받고 있어요 잘못된?

+1

중간 결과를 인쇄하여 예상 한 것과 비교하지 않는 이유는 무엇입니까? –

+0

때때로 8 진수 입력을 2 자리 2 진 문자열로 변환하기도하고 때로는 3 자리 2 진 문자열로 변환하기도합니다. 그게 관련이있을 것 같아요. –

+0

또한 두 번째 부분에 "원치 않는"대체 항목이있을 수 있습니다. –

답변

0

대신

int user_input_dec = Integer.parseInt(user_input,8); 
String hex = Integer.toHexString(user_input_dec); 
0

내가이 문제를보고이 문제를 고려해 볼 수 있습니다 :

  1. 8 진수를 2 진수에서 0-3로 변환, 당신은 현재 0을 선도하고, 코드가 진수 10을 변경하는 것이 필요 이진수 0100으로 잘못되었습니다 (8을 4로 설정했습니다).
  2. 바이너리를 16 진수로 구문 분석 할 때 바꾸기 만 수행하면 0000 또는 0001 파싱의 결과가 후속 호출에서 구문 분석 될 수 있습니다. 예를 들어, 00000010 인 경우 먼저 00010으로 변경 한 다음 10으로 변경하고 2으로 구문 분석해야한다고 생각하면 중지합니다.

이러한 것들을 패치 할 수 있지만, @asantaballa는 맞습니다. Integer.toHexString(Integer.parseInt(user_input, 8))은 코드를 얻으려고했던 것과 같은 일을합니다.