티스토리 뷰

728x90

파이썬에서는 2진수, 8진수, 10진수, 16진수로 쉽게 변환할 수 있도록 내장함수가 포함되어 있다. 

하지만 3진수나 4진수와 같이 다른 진수로 변환하고자 한다면 직접 구현을 할 수 밖에 없다.

 

1. 파이썬 내장 함수

[PYTHON] 파이썬 10진수 변환(2진수,8진수,16진수) (tistory.com)

 

2. 10진수 → n진수

2-1. 10진수를 n진수로 변환하기(2진수-16진수)

def convert_notation(n, base):
    T = "0123456789ABCDEF"
    q, r = divmod(n, base)

    return convert_notation(q, base) + T[r] if q else T[r]
        
print(convert_notation(233, 3))

* divmod 함수 : [Python] 몫과 나머지 동시에 구하기 - divmod 함수 (tistory.com)

 

2-2. 10진수를 n진수로 변환하기(2진수-9진수)

9진법까지는 다음과 같이 간단하게 구할 수 있다는 것도 기억해두자!

d = 45
n = 3

tmp = ''
while d:
	tmp += str(d % n)
    d = d // n
    
print(int(tmp)) # 1200

 

3. n진수 → 10진수

3-1. n진수를 10진수로 변환하기(2진수-9진수)

 

  1. n진수의 순서를 반대로 만든다.
  2. n의 제곱 차수를 늘려가면서 값을 곱해준다.
  3. 누적한다.
def convert_to_decimal(n, base):
    decimal = 0
    for idx, val in enumerate(str(n)[::-1]):
        decimal += (3 ** idx) * int(val)
        
    return decimal

print(convert_to_decimal(21, 3) # 7

* enumerate : 

* [::-1] : [Python] 문자열(String) 뒤집기 - [::-1] (tistory.com)

 

3-2. n진수를 10진수로변환하기 - int 함수

파이썬의 내장함수인 int 함수를 이용하여 편하게 n진수를 10진수로 변환할 수 있다. 

첫번째 인자로 문자열이 와야한다는 것에 주의하자!

print(int(str(21), 3)) 

 

 

 

 

 

 

 

728x90
댓글
공지사항
최근에 올라온 글