[Python] 진법 변환 - int(), bin(), oct(), hex()
by Roel Downey728x90
반응형
n 진법으로 표기된 문자열을 10진법 숫자로 변환하는 방법을 알아보자.
예) 5진법으로 적힌 문자열 '3212'를 10진법으로 바꾸기
다른 언어에서는..(또는 이 기능을 모르시는 분은)
for 문을 이용해 숫자를 곱해가며 문제를 푼다.
num = '3212'
base = 5
answer = 0
for idx, number in enumerate(num[::-1]):
answer += int(number) * (base ** idx)
파이썬에서는
파이썬의 int(x, base=10) 함수는 진법 변환을 지원한다.
이 기본적인 함수를 잘 쓰면 코드를 짧게 쓸 수 있고, 시간을 절약할 수 있다.
num = '3212'
base = 5
answer = int(num, base)
만약에 x가 숫자라면 TypeError: int() can't convert non-string with explicit base
이런 오류를 만나게 된다. 그럼 x를 str(x)로 변환해서 실행하면 된다.!!!!
10진법 -> 2 , 8, 16 진수로 변환하는 방법을 알아보자.
print(bin(10)) # 0b1010
print(oct(10)) # 0o12
print(hex(10)) # 0xa
0b는 2진수, 0o는 8진수, 0x는 16진수를 의미한다. 앞의 진법 표시를 지울려면 [2:]를 하면 된다.
print(bin(10)[2:])
print(oct(10)[2:])
print(hex(10)[2:])
2,8,16 이외의 변환을 하려고 한다면 아래와 같이 작성한다.
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]
728x90
반응형
'Python' 카테고리의 다른 글
[Python] map 내장 함수 사용법 (0) | 2021.05.06 |
---|---|
[python] 2차원 리스트 뒤집기 - zip (0) | 2021.05.06 |
[Python] 원본을 유지한채, 정렬된 리스트 구하기 - sorted (0) | 2021.05.06 |
[Python] 문자열 정렬하기 - ljust, center, rjust (0) | 2021.05.06 |
[Python] 몫과 나머지 ( // , % , divmod()) (0) | 2021.05.06 |
블로그의 정보
What doing?
Roel Downey