파이썬에서 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진수로 변환해주는 역할을 잘 수행합니다.
'Dev > python' 카테고리의 다른 글
[python] 0으로 채워진 1차원, 2차원 리스트(배열) 만들기 (0) | 2022.10.11 |
---|---|
[python] 리스트에서 최대값, 최소값의 인덱스 구하기 (0) | 2022.10.09 |
[python] scikit-learn의 confusion matrix 해석하기 (0) | 2022.10.08 |
[python] 딕셔너리에서 value가 가장 큰 key 알아내는 방법 (0) | 2022.10.07 |
[pandas] 컬럼 값이 특정 조건에 부합하는 행들의 특정 컬럼 값 수정하기 (0) | 2022.10.02 |
[pandas] 데이터프레임 행 또는 컬럼 삭제하기, drop() 메소드 (0) | 2022.10.01 |
[python] 010-1234-5678과 같은 전화번호 문자열에서 하이픈(-) 빼기 (0) | 2022.09.21 |
[python] 클래스(class), 객체(object), 인스턴스(instance) 용어 정리 (0) | 2022.09.21 |