n진수 ⇒ 10진수로 변환

  • int(string, n진수) : string을 n진수값으로 간주하고 결과값을 10진수로 반환
  • 인자로는 n진수를 문자열로 넣고 결과값은 int로 출력함
  • 진수를 생략하면 n진수를 10진수로 간주하여 문자열을 그냥 숫자로 바꿈
print(int('101',2))
>>> 5
print(int('101'))
>>>101
print(int('202',3))
>>> 20
print(int('303',4))
>>> 51
print(int('404',5))
>>> 104
print(int('505',6))
>>> 185
print(int('ACF',16))
>>> 2767

 

10진수 ⇒ 2, 8, 16진수로 변환

  • 2, 8, 16진수는 bin(), oct(), hex() 함수를 지원함
  • 입력값은 int이지만, 결과값은 string으로 반환함
  • 2진수는 앞에 0b, 8진수는 앞에 0o, 16진수는 앞에0x를 붙혀서 반환함
print(bin(110))
>>> 0b1101110
print(oct(110))
>>> 0o156
print(hex(110))
>>> 0x6e

# 앞에 진수를 나타내는 글자 제외하기
print(bin(110)[2:])
>>> 1101110
print(oct(110)[2:])
>>> 156
print(hex(110)[2:])
>>> 6e

 

10진수 ⇒ n진수로 변환

  • int 같은 함수가 없기 때문에 코드작성이 필요함
def solution(n, q):    # n: 10진수,  q : 변환할 진수   int -> str
    answer = ''
    while n >0:
        a = n%q
        answer = str(a) + answer
        n = n//q
    return answer 

print(solution(45,3))
>>> 1200

 

n진수 ⇒ n진수로 변환

  • 바꾸기 전 n진수를 int()함수를 이용해서 10진수로 만들고(str → int), 위에서 만든 solution함수를 이용해서 바꿀 n진수로 바꿈(int → str)
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

+ Recent posts