오늘 코딩테스트를 치르면서 진수변환을 이용하는 문제가 나왔는데, 파이썬에서 진수변환 라이브러리가 있는지, 없는지 기억이 안나서(..) 공식문서를 한참 뒤지다가 결국 구현해서 풀었다. 그래서 이번 기회에 정리해보고자 한다.
n진수 -> 10진수
사실 이건 공식 문서 읽어도 찾을 수 있었다.
int(string, base)를 통해 변환하면 n진수(base)의 string이 10진수로 변환된다.
10진수 -> 2,8,16진수
이것 또한 공식 문서 읽어서 찾을 수 있었다..
2진수는 bin(), 8진수는 oct(), 16진수는 hex()를 사용한다.
10진수 -> n진수
이게 코딩테스트에 나왔던 문제였는데, 직접 코드를 작성해야한다고 한다. 코테 시간낭비한거였다(...) 다만 내가 짰던 것보다 좀 더 효율적인 코드를 찾아서 기록해본다.
def convert(num,base):
rev_vase = ''
while n>0:
num,mod = divmod(num,base)
rev_base += str(mod)
return rev_base[::-1]
나는 divmod()를 몰라서 직접 나누고 나머지를 구하고 했다(...)
n진수 -> m진수
이 경우는 n진수->10진수->m진수의 과정을 이용하면 된다고 한다.