본문 바로가기
Python

2진법, 8진법, 16진법, 10진법 파이썬 변환 총정리

by Queen2 2022. 9. 12.
728x90
반응형

코딩 문제 풀때마다 이 문제들은 알면 쉬운데 모르면 복잡해져서 틀리곤 하는데요 ㅜㅠ

오늘 정리해서 안 까먹도록 해보겠습니다

 

1. 내장함수로 10진수를 2/8/16진수로 변환하기 => 문자열 반환

변환 대상 진수 함수명
2진수 bin()
8진수 oct()
16진수 hex()
다른 진수에서 10진수로 바꿀 때 str()

 

2. Format으로 10진수 변환하기 => 문자열 반환

변환 대상 진수 함수명
2진수 format(10진수,'b')
8진수 format(10진수,'o')
16진수 format(10진수,'x')
**주의점은 여기서 '#b', '#o','#x'처럼 앞에 #을 붙이면 반환값 앞에 아래와 같은 문자열이 붙는데요
 일반적으로 1010이 나온다면 이진법인지 그냥 1010을 말하는지 헷갈리겠죠? 그래서 이런 접두사를 붙여준다고 합니다
- 2진수는 0b
- 8진수는 0o
- 16진수는 0x

 

3. 2/8/16진수를 다른 진수로 변환하기 => 문자열 반환

사실 기본 방법은 내장함수를 사용하는 법, format을 사용하는 방법은 10진수를 변환하는 방법과 같습니다. 다만, input value가 2,8,16 진수에서 다른 진수로 변환하면 위의 접두사가 붙어서 반환되는데요

 

 

4. 2/8/16진수를 10진수로 변환하기 int(str value,진수 숫자) => 숫자 반환

보통 정수로 변환하는 int()함수를 진수 변환으로 쓸 수 있다는 사실이 신기했는데요

int('16진수',16) --> 10진수

int('8진수',8) --> 10진수

int('2진수',2) --> 10진수

 

    def addBinary(self, a, b):
            a = int(a, 2)
            b = int(b, 2)
            return (bin(a+b))[2:]

이진수인 숫자a,b를 각각 더해서 이진수로 다시 반환하는 addBinary를 만들어봤는데요

a = int(a,2)에서 이진수인 a를 10진수로 변환해주고, b = int(b,2)에서 이진수인 b를 10진수로 변환한 뒤

마지막에 10진수로 더한 a+b를 다시 이진법으로 변환한 뒤에 [2:]를 통해서 0b 접두사를 제거해준 방법으로 볼 수 있습니다

5. 몫과 나머지를 이용한 10진수 변환 방법

def transform(n,v):
	answer = ''
  	while n:
    	answer += n%v
        n = n //v
    return answer

변환하려는 10진수를 10, 변환하려는 진수를 2라고 했을 때 transform(10,2)라고 했을 때 1010이 나오는 함수인데요

몫과 나머지를 구할 때 divmod(value)를 사용해서 몫과 나머지를 쉽게 구할 수도 있습니다

728x90
반응형

댓글