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
반응형
'Python' 카테고리의 다른 글
Python 딕셔너리 키 값, value 값으로 정렬하는 법 (1) | 2022.09.21 |
---|---|
Heapq 알고리즘 개념 및 활용방법 정리 (1) | 2022.09.21 |
Python List append/extend와 +=의 차이점 정리 (1) | 2022.09.20 |
BFS/DFS 탐색 개념 정리 (0) | 2022.09.10 |
Python Class 개념 한번에 이해하기 (객체,인스턴스,어트리뷰트) (0) | 2022.09.08 |
댓글