Python에서는 내장 함수만으로 10진수(Decimal)를 2진수(Binary), 8진수(Octal), 16진수(Hexadecimal) 같은 다른 진법으로 아주 간단하게 변환할 수 있습니다.
예를 들어 10진수 19를 변환하면, 2진수로는 10011, 8진수로는 23, 16진수로는 13이 됩니다.
변환 결과에는 각각 2진수 앞에 0b, 8진수 앞에 0o, 16진수 앞에 0x라는 접두사가 붙습니다. 이러한 표기법 덕분에 출력된 숫자가 어떤 진법인지 한눈에 쉽게 구별할 수 있습니다.
예제 코드
Python에서는 bin(), oct(), hex() 함수를 사용하여 진법을 변환합니다.
# bin(), oct(), hex() 함수 사용
x = 242
print('숫자 {}의 2진수 형태: {}'.format(x, bin(x)))
print('숫자 {}의 8진수 형태: {}'.format(x, oct(x)))
print('숫자 {}의 16진수 형태: {}'.format(x, hex(x)))
실행 결과
숫자 242의 2진수 형태: 0b11110010 숫자 242의 8진수 형태: 0o362 숫자 242의 16진수 형태: 0xf2
참고: 접두사 없이 순수한 숫자만 얻기
0b, 0o, 0x 같은 접두사를 제외하고 순수한 숫자 문자열만 필요하다면 슬라이싱 또는 포맷 지정자를 활용할 수 있습니다.
x = 242 # 슬라이싱 활용 print(bin(x)[2:]) # 11110010 print(oct(x)[2:]) # 362 print(hex(x)[2:]) # f2 # format() 활용 print(format(x, 'b')) # 11110010 print(format(x, 'o')) # 362 print(format(x, 'x')) # f2
이처럼 Python의 기본 제공 함수와 포매팅 기능을 활용하면 별도의 라이브러리 설치나 복잡한 알고리즘 구현 없이도 다양한 진법 간 변환을 손쉽게 처리할 수 있습니다.