[코테 스니펫]n진수 -> 10진수, 10진수 -> n진수

zzarbttoo·2021년 9월 26일
0

스니펫

목록 보기
1/2

간단해보이지만 막상 맞닥뜨리면 겁먹게 되는 문제인 것 같다
(안 나올 것 같지만 새끼문제로 여러번 나왔다)
🤦‍♀️

그래서 한 번 정리해보기로 했다
일단 난 python을 이용해서 코테를 풀기 때문에 그것에 대해서만 정리할 것이다

| 모듈 사용

파이썬에서는 기본적으로 다음과 같은 함수들을 제공한다

bin(10) #2진수
oct(10) #8진수
hex(100) #16진수

결과는 다음과 같이 나온다

이런 것들을 다시 10진수로 돌리는 것은 간단하다

int(bin(10), 2) # 2 -> 10 
int(oct(10), 8) # 8 -> 10
int(hex(10), 16) # 16 -> 10

별말 없으면 위의 것들을 사용하면 되지만
직접 구현하라는 정말 멱살잡고 싶은 순간에는 아래의 것들을 사용하면 된다

| 직접 구현

10 진수 -> N 진수

def dem_to_n(num, n):
    
    rev_base = ''

    while num > 0:
        num , remainder = divmod(num, n)
        rev_base += str(remainder)

    return rev_base[::-1]

N 진수 -> 10 진수

def n_to_dem(num, n):
    
    demical = 0

    for i, val in enumerate(num[::-1]):
        demical += (n ** i) * int(val)
    
    return demical

이렇게 간단하게 할 수 있다
그래서 n진수 -> m진수를 구해야 할 경우
n진수 -> 10진수 -> m진수 이렇게 거쳐서 구할 수 있다

profile
나는야 누워있는 개발머신

0개의 댓글