2022-10-03 21:26:00

파이썬에서 10진수를 2진수, 8진수, 16진수로 변환하기 위해서는 어떻게 해야할까요? 

 

10진수를 2진수, 8진수, 16진수로 변환하기

파이썬에서 제공되는 함수 사용

당연히 이와 관련된 파이썬 함수가 있겠죠? 있다면 그것을 사용하는 것이 최선입니다. 인터넷에서 검색한다면 다음과 같은 함수명들을 찾아낼 수 있을 것입니다.

 

bin() 함수: 10진수를 2진수로 변환(결과는 문자열)

oct() 함수: 10진수를 8진수로 변환(결과는 문자열)

hex() 함수: 10진수를 16진수로 변환(결과는 문자열)

 

num = 317

num2 = bin(num)
num8 = oct(num)
num16 = hex(num)

print(num2)
print(num8)
print(num16)

print(type(num2))
print(type(num8))
print(type(num16))

 

 

직접 구현

반면, 인터넷 사용이 불허된 코딩 테스트 환경이거나, 위 함수를 사용해서는 안 되는 제약이 있는 상황이라면, 10진수를 2진수 등으로 변환하는 알고리즘을 직접 짜야할 것입니다. 저는 중학교 때인가 고등학교 때인가 이런 방식으로 이진수를 산출하는 방법을 배웠던 것 같습니다. 

 

 

그렇다면 이 계산 방식을 코드로 구현하면 되겠죠? 2진수를 구하고 싶을 때는 2로 반복해서 나눕니다. 몫이 2보다 작아질 때까지 말이죠. 최종 몫과 그동안 2로 나누면서 생겼던 나머지를 모두 연결해주면 2진수가 됩니다. 이것을 파이썬에서 하나의 함수로 만들어보겠습니다. 

 

def convert2binary(num):
    temp = []

    while True:
        remainder = num % 2
        num = num // 2
        temp.append(remainder)
        
        if num < 2:
            temp.append(num)
            break

    temp.reverse()
    result = "".join(map(str, temp))
    return result

num = 25
binary_num = convert2binary(num)
print(binary_num)

 

보시는 것처럼 저는 convert2binary()라는 함수를 만들었고, 그 함수는 주어진 10진수 숫자를 2진수로 변환해주는 역할을 잘 수행합니다.