Python 에서는 int() 함수를 지원합니다.
int(string, base)
을 넣어서 n진수 → 10진수 변환이 가능합니다.
코드
print(int('111',2)) print(int('212',3)) print(int('321',4))
실행결과
7 23 57
10진수 → 2진수, 8진수, 16진수 변환을 해야 할 경우
코드
print(bin(123)) # 2진수 print(oct(123)) # 8진수 print(hex(123)) # 16진수
실행결과
0b1111011 0o173 0x7b
하지만 10진수를 2진수, 8진수, 16진수 외의 다른 n진수에 대해 변환을 해야 할 떄가 있습니다.
진법 변환 함수 (dictionaty를 하용하여 A, B, C, D, E, F 추가)
dic = { 10 : 'A', 11 : 'B', 12 : 'C', 13 : 'D', 14 : 'E', 15 : 'F' } def calculator(n, q, dic): rev_base = '' if n == 0: return '0' while n > 0: n, mod = divmod(n, q) if mod >= 10: mod = dic[mod] rev_base += str(mod) return rev_base[::-1]
코드
print(calculator(123, 2, dic)) # 2진법 print(calculator(123, 4, dic)) # 4진법 print(calculator(123, 7, dic)) # 7진법 print(calculator(123, 16, dic)) # 16진법
실행결과
1111011 1323 234 7B
코드
print(int('1111011', 2)) print(int('1323', 4)) print(int('234', 7)) print(int('7B', 16))
실행결과
123 123 123 123