목차
728x90
반응형
Python 여러가지 진법 변환
1. 10진수 -> 2, 8, 16진수
1-1. 10진수 -> 2진수
# a 에 10진수
bin(a) # 기본 형식
format(a, 'b') # 기본 형식
print(bin(10))
print(bin(10)[2:])
print(format(10, 'b')
print(format(10, '#b')
------------------------
> ob1010
> 1010
> 1010
> ob1010
- bin 함수를 실행하면 앞에 ob가 붙음, [2:]로 리스트 잘라 숫자만 출력
- format 함수에서 'b' 앞에 #을 붙이면 ob 붙어서 출력
1-2. 10진수 -> 6진수
# a 에 10진수
oct(a) # 기본 형식
print(oct(10))
print(oct(10)[2:])
------------------------
> Oo12
> 12
- oct 함수를 실행하면 앞에 Oo가 붙음, [2:]로 리스트 잘라 숫자만 출력
1-3. 10진수 -> 18진수
# a 에 10진수
hex(a) # 기본 형식
print(hex(10))
print(hex(10)[2:])
------------------------
> Oxa
> a
- hex 함수를 실행하면 앞에 Ox가 붙음, [2:]로 리스트 잘라 숫자만 출력
2. 10진수 -> n진수
- 10진수에서 n진수로 변환하는 함수는 없음
# n은 10진수, q는 n진수의 n
def solution(n, q)
cvt = ''
while n > 0:
n, mod = divmod(n, q)
cvt += str(mod)
return cvt[::-1] # 진수가 역순이어서 다시 뒤집어서 출력
print(solution(45, 3))
print(solution(10, 4))
-------------------------------
> 1200
> 22
- cvt 가 역순으로 출력되는 이유 : 진수 변환을 위해 나머지를 계속 추가하는 과정에서, 가장 낮은 자리의 나머지부터 추가되기 때문
-divmod(a, b) 함수 원리
-출력 : (a//b, a%b)
-(a와 b를 나눴을 때 몫, a와 b를 나눴을 때 나머지)
divmod(8, 2)
divmod(6, 2)
divmod(4, 3)
------------------------
> (4, 0)
> (3, 0)
> (1, 1)
3. n진수 -> 10진수
# a에 변환할 문자열, b에 n진수에서 n
int(a, b) # 기본 형식
print(int('111', 2))
print(int('222', 3))
print(int('333', 4))
print(int('444', 5))
---------------------------------------
> 7
> 26
> 63
> 124
728x90
반응형
'Python > 기초문법' 카테고리의 다른 글
[기초문법] 아스키코드 변환 (ASCII) (0) | 2023.08.06 |
---|---|
[기초문법] itertools를 이용한 순열, 조합 (0) | 2023.07.13 |
[자료구조] 스택(Stack), 큐(Queue) (0) | 2023.05.17 |
[기초문법] strip(), split() (0) | 2023.05.16 |
[기초문법] replace 함수 (0) | 2023.05.08 |