만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍/기억노트

[python] n진법 수를 10진법 수로, 10진법 수를 n진법 수로

D36choi 2020. 10. 16. 23:05
728x90

10진수 정수를 1부터 9까지의 n진법으로 변환해 출력해보자.

n진법 수 -> 10진법 수

num = '1001001'
base = 2

answer = 0
for idx, i in enumerate(num[::-1]):
    answer += int(i) * ( base ** idx )

문자열의 역순에서 base 의 자릿수승 (2진법의 경우 1,2,4,8,16, .... ) 만큼의 곱을 계속 더해 십진수로 변환함.

 

 

10진법 수 -> n진법 수

from collections import deque

num=34
n=8
q = deque([])
o=''
while num:
    num,m=divmod(num,n)
    o=(str(m) if m<10 else 'ABCDEF'[m-10])+o
    q.appendleft(str(m) if m<10 else 'ABCDEF'[m-10])

print(''.join(q))

16진수 이하의 경우에만 가능함.

num 변수의 값이 10진수 정수여야만 가능함.