2진수, 8진수, 16진수, 10진수

2020-12-21

10진수 → 2진수, 8진수, 16진수

format(42, 'b') # 101010
format(42, 'o') # 52
format(42, 'x') # 2a
format(42, 'X') # 2A
format(42, 'd') # 42

bin(42) # 0b101010
oct(42) # 0o52
hex(42) # 0x2a

bin(42)[2:]  # 101010
oct(42)[2:]  # 52
hex(42)[2:]  # 2a

2진수, 8진수, 16진수 → 10진수

int('101010', base=2) # 42
int('52', base=8) # 42
int('2a', base=16)  # 42

10진법을 n진법으로 변환하기

import string
alp = string.digits + string.ascii_uppercase
# "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def num_change(d, base):
  q, r = divmod(d, base) # 10진수 d를 base진법 숫자로 나눈 몫과 나머지를 리턴
  i = alp[r] # base 진법에 해당하는 수를 변수 i에.
  return num_change(q, base) + i if q else i # 몫을 계속 base 진법으로 나눔. 몫이 0이 될 때까지.

n, b = map(int, input().split())
res = num_change(n, b)
print(res)

문제 보기