PYTHON

[PYTHON] 진수변환

_알파카 2024. 3. 20. 16:54
728x90

N진수 -> 10진수

int 함수의 2번째 인자를 활용해서 N 진수의 문자열을 정수형(int) 숫자로 형변환할 수 있다. 

# 2진수 문자열 -> 10진수 정수로 변경
int('문자', 2)

# 8진수 문자열 -> 10진수 정수로 변경
int('문자', 8)

# 16진수 문자열 -> 10진수 정수로 변경
int('문자', 16)

 

10진수 -> 2, 8, 16진수

# 10진수 -> 8진수 문자열
oct(11)
# 0o13

# 10진수 -> 16진수 문자열
hex(11)
# 0xb

# 10진수 -> 2진수 문자열
bin(11)
# 0b1011

 

10진수 -> N진수

10진수에서 2, 8, 16진수 외의 다른 진법으로 변환은 코드 작성이 필요하다. 

def solution(n, q):
    rev_base = ''

    while n > 0:
        n, mod = divmod(n, q)
        rev_base += str(mod)

    return rev_base[::-1] 
    # 역순인 진수를 뒤집어 줘야 원래 변환 하고자하는 base가 출력
    
print(solution(45, 3))
# 1200

 

N진수 -> N진수

위의 코드를 활용하여 N진수를 10진수로 변경한 후, 다시 N진수로 변경

print(solution(int('c',16),4)) # 16진수인 C를 4진수로 바꾸는것
# 30

print(solution(int('4',6),3))  # 6진수인 4를 3진수로 바꾸는것
# 11

print(solution(int('21',3),7)) # 3진수인 21을 7진수로 바꾸는것
# 10

print(solution(int('15',9),5)) # 9진수인 15를 5진수로 바꾸는것
# 24

 

728x90