티스토리 뷰
반응형
10진법을 N 진법으로 변환하는 가장 기본은 해당 수로 몫과 나머지를 구해나가며, 나중에 나머지를 역순으로 붙인다는 것이다.
python에서는 int 함수나 hex, bin 같은 내장 함수로 10진수를 2,8,16 진수로 바꿀 수 있고, n 진수에서 10진수로 바꾸는 것도 가능하다.
하지만 10진법을 n진법으로 바꾸기 위해서는 따로 설정해주는 함수가 필요한데, 이는 다음과 같다.
import string
tmp = string.digits+string.ascii_uppercase+string.ascii_lowercase #진수 변환 함수
print(tmp)
def convert(num, base) :
q, r = divmod(num, base) #몫과 나머지를 구한다.
if q == 0 :
return tmp[r] #딱 떨어졌다면 몫을 반환
else :
return convert(q, base) + tmp[r] #q가 0이 되었을 때 재귀하여 역으로 반환
tmp 파일은 10~35까지가 대문자, 36~61까지가 소문자 알파벳이다.
왜 이렇게 했냐면, 61진법까지 표기하기 위해서는 구분이 필요하기 때문.
그리고 가장 중요한 convert 함수를 보면, 처음에 divmod 함수로 몫과 나머지를 구한다.
그렇게 자신의 함수를 재귀해나가면서, 만약 q==0에 도달하게 되면 마지막 나머지를 반환하고, 그동안 구했던 나머지를
역순으로 붙인다.
가장 기본적으로 10 진법을 n진법으로 바꾸는 함수이다.
그렇다면 n진법을 10진법으로 바꾸기 위해서는 어떻게 해야 할까?
간단하다. int(string,base)를 하면 된다.
base에는 바꾸고자 하는 수의 현재 진법을 넣으면 된다.
print(int('A3',12))
>123
반응형