본문 바로가기
코딩 연습/파이썬 기초(예제)

진수 변환 - 2진수 변환, 8진수 변환, 16진수 변환 [파이썬기초예제]

by good4me 2022. 4. 23.

goodthings4me.tistory.com

진수 변환 코드 - 파이썬에서 진수를 어떻게 계산하는지 찾아보니 10진수를 2진수, 8진수, 16진수 변환하기 위해서는 bin(), oct(), hex() 함수를 각각 사용한다. 오늘은 이 함수를 가지고 진수를 상호 변환하는 코드를 연습해봤다.

 

 

파이썬 진수 변환 : 2진수, 8진수, 10진수, 16진수 상호 간 변환하기

10진수인 경우에는 bin(), oct(), hex() 함수의 매개변수로 대입해주면 바로 각각의 진수 형태로 변환이 되지만 2진수, 8진수, 16진수의 경우는 10진수로 변환 후에 각각의 진수에 대입하는 방법으로 진수 변환을 했다.

 

[파이썬 소스 코드]

def antilogarithm_convert():
    ex = {'2':'0b', '8':'0o', '10':'양수', '16':'0x'}
    antilog = ''

    while antilog not in ('2', '8', '10', '16'): 
        antilog = input('\n입력할 진수 선택\n(2, 8, 10, 16 중 1개 입력): ')
    
    for i in range(3):
        try:
            res = input(f'\n{antilog}진수는 "{ex[antilog]}"로 시작: ')
            print(f'\n입력한 {antilog}진수 "{res}"에 대해...')

            if antilog == '2':
                print('8진수:', oct(int(res, 2)))
                print('10진수:', int(res, 2))
                print('16진수:', hex(int(res, 2)))
            if antilog == '8':
                print('2진수:', bin(int(res, 8)))
                print('10진수:', int(res, 8))
                print('16진수:', hex(int(res, 8)))
            if antilog == '10':
                print('2진수:', bin(int(res)))
                print('8진수:', oct(int(res)))
                print('16진수:', hex(int(res)))
            if antilog == '16':
                print('2진수:', bin(int(res, 16)))
                print('8진수:', oct(int(res, 16)))
                print('10진수:', int(res, 16))
            break
        except:
            print('잘 못 입력했네요!')
    
antilogarithm_convert()
  • 오입력 에러 처리를 위해서 '입력할 진수 선택' 시 2, 8, 10, 16 이외의 숫자를 입력할 경우 while 반복문으로 다시 입력하도록 했고,
  • 진수를 잘 못 입력한 경우에는 for 문으로 2회 더 입력할 기회를 주었다.  

 

good4me.co.kr

 

[실행 결과]

입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): 10

10진수는 "양수"로 시작: 255

입력한 10진수 "255"에 대해...
2진수: 0b11111111
8진수: 0o377
16진수: 0xff


입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): 2

2진수는 "0b"로 시작: 0b11111011

입력한 2진수 "0b11111011"에 대해...
8진수: 0o373
10진수: 251
16진수: 0xfb


입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): 8

8진수는 "0o"로 시작: 0o342

입력한 8진수 "0o342"에 대해...
2진수: 0b11100010
10진수: 226
16진수: 0xe2


입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): 16

16진수는 "0x"로 시작: 0xff9a

입력한 16진수 "0xff9a"에 대해...
2진수: 0b1111111110011010       
8진수: 0o177632
10진수: 65434


###############################

# 입력 에러 처리는

입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): 3

입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): a

입력할 진수 선택
(2, 8, 10, 16 중 1개 입력): 2

2진수는 "0b"로 시작: ob1111

입력한 2진수 "ob1111"에 대해...
잘 못 입력했네요!

2진수는 "0b"로 시작: 0b2222

입력한 2진수 "0b2222"에 대해...
잘 못 입력했네요!

2진수는 "0b"로 시작: 0b1212

입력한 2진수 "0b1212"에 대해...
잘 못 입력했네요!

 

 

위 코드를 파이썬 Tkinter 모듈과 함께 만든 '진수 변환기' 프로그램 다운로드

 

진수 변환기
진수 변환기

 

댓글