반응형
[Pyhton 진법 변환]
n진수 → 10진수
python에서는 기본적으로 int() 라는 함수를 지원합니다.
int(string, base)
위와 같은 형식으로 사용하면 됩니다. base에는 진법을 넣으면 됩니다.
print(int('111',2))
print(int('222',3))
print(int('333',4))
print(int('444',5))
print(int('555',6))
print(int('FFF',16))
7
26
63
124
215
4095
이렇게 10진수로 쉽게 변경이 가능합니다.
10진수 → 2, 8, 16진수
2, 8, 16진수는 bin(), oct(), hex() 함수를 지원합니다.
* 결과는 모두 string 입니다.
print(bin(10))
print(oct(10))
print(hex(10))
0b1010
0o12
0xa
0b는 2진수, 0o는 8진수, 0x는 16진수를 의미합니다. 앞의 진법 표시를 지울려면 [2:]를 하면 됩니다.
print(bin(10)[2:])
print(oct(10)[2:])
print(hex(10)[2:])
1010
12
a
10진수 → n진수
10진수에서 다른 진법으로 변환은 아쉽게도 직접 코드를 작성해야 합니다.
import string
tmp = string.digits+string.ascii_lowercase
def convert(num, base) :
q, r = divmod(num, base)
if q == 0 :
return tmp[r]
else :
return convert(q, base) + tmp[r]
위의 함수를 작성하여 쓰면 됩니다. (tmp에 소문자를 다 넣었기 때문에 16진법 이상도 가능합니다.)
print(convert(10,2))
print(convert(10,3))
print(convert(10,4))
print(convert(10,5))
1010
101
22
20
n진수 → n진수
위에 썻던것들을 활용해서 n진수를 10진수로 변경하고 다시 n진수로 변경하면 됩니다.
import string
tmp = string.digits+string.ascii_lowercase
def convert(num, base) :
q, r = divmod(num, base)
if q == 0 :
return tmp[r]
else :
return convert(q, base) + tmp[r]
위의 함수를 다시 이용합니다.
print(convert(int('a',16),2))
print(convert(int('4',5),3))
print(convert(int('2',3),4))
print(convert(int('11',2),5))
1010
11
2
3
반응형
'Language_ > python' 카테고리의 다른 글
[Python] DFS(Depth-First Search) 정점의 Depth 구하기?! (1) | 2021.08.07 |
---|---|
[Python] abs(절대값) 함수 정리 (0) | 2021.08.06 |
[python] RuntimeError: deque mutated during iteration. 해결방법 (0) | 2020.08.22 |
[python] Heapq 힙 모듈?! (heapq의 사용법) (0) | 2020.08.14 |
[python] startswith() 사용방법 정리 @.@ (3) | 2020.08.13 |
댓글