2010-05-16 2 views
1

문자열에 포함 된 숫자를 임의의 기준에서 다른 기준으로 변환하려면 어떻게해야합니까?문자열의 숫자를 어셈블리의 기본으로 변환하려면 어떻게해야합니까?

기지는 즉 아무것도 할 수 있습니다 : 2, 16, 10, 4, 8, 나는베이스 번호를 입력 할 수있는 사용자를 기대하고있어 9

. 사용자는 출력 기준 (변환 대상 기준)을 입력합니다. 사용자가 변환하려는 번호를 입력합니다.

사전 생각 : 변수에 입력 기준과 출력 기준을 저장합니다. 그럼 그가 어떤 종류의 숫자 (16 진수, 2 진수, 5 진수 ..)를 입력 할 수 있기 때문에 문자열에 입력 한 번호를 저장합니다.

나는 그 문자열을 변환하는 방법을 알아 내려고하고 있습니다. 숫자로 그래서 내가 출력베이스로 변환 할 수 있습니다

어떤 아이디어를

+0

더 구체적으로해야 할 것으로 생각합니다.이 웹 사이트에서 숙제에 대한 완전한 대답을 얻지 못할 것입니다. – SoapBox

+0

"어셈블리"는 잘 정의 된 언어가 아닙니다. 어떤 칩셋인가? x86? – user168715

+0

당신이 어떻게 그것을 손으로 할 수 있는지 생각해보십시오. 게시하면 ASM에서이를 대표하는 데 도움을 줄 것입니다. – tpdi

답변

1

문자열을 정수로 변환하려면 ASCII table을 살펴 봐야합니다.

'0'에서 '9', 'a'에서 'f', 'A'까지 캐릭터의 범위와 범위에 따라 문자열의 각 문자를 반복합니다. 'F'로 설정하면 해당 범위의 아래쪽 문자의 값을 뺀 다음 적절한 금액을 추가해야합니다. 그 값을 누적 기 값에 추가하면 이동하도록 설정해야합니다. 나는 또한 값이 무엇인지 알 수있는 값을 확인해야 할 것 같다. (예를 들어, 16 진수 값 앞에 "0x"를 붙이면된다.)

예를 들어, '1'이 표시되면 '0'을 뺄 필요가 있습니다. 'a'가 표시되면 'a'를 빼고 0x0a를 추가해야합니다.

+0

감사합니다. 나는 이렇게 할 거라고 생각해. – Nick

3

베이스 (B)에 수 n을 변경하는 일반적인 알고리즘과 같이 진행됩니다.?

i = 0 
while(n != 0) 
    answer[i] = n mod b 
    n /= b 
    i++ 

(즉 답을 주 [0]은 대답의 최하위 자리를 차지합니다.) 이것이 의미가 있습니까? 이 의사 코드는 구현에 문제가 있습니까?

+0

대답 []은 출력 번호의 문자를 보유하는 BYTE로 저장된 문자열입니까? – Nick

+0

의사 코드는 각 숫자를 정수로 저장하지만 문자로 변환하는 것은 간단합니다 (0x30 추가). – user168715