[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
반응형
블로그의 정보
What doing?
Roel Downey활동하기
What doing?Roel Downey 님의 블로그입니다.
![[python] 2차원 리스트 뒤집기 - zip 글의 미리보기 사진](https://img1.daumcdn.net/thumb/R100x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcBGOn3%2Fbtq5SbioL3N%2FAAAAAAAAAAAAAAAAAAAAAEHdFvBZGYQIAbiFb6Snw-cbi9kwHSL3CZoCUUeJ8e5r%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1767193199%26allow_ip%3D%26allow_referer%3D%26signature%3Da0upnB9YZX4yCcHHpXOnUMfuu1A%253D)
![[Python] 원본을 유지한채, 정렬된 리스트 구하기 - sorted 글의 미리보기 사진](https://img1.daumcdn.net/thumb/R100x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FblsWfm%2Fbtq5RD0vEgU%2FAAAAAAAAAAAAAAAAAAAAAOOMZNylgxCA8wmRRsvtETNkmZptHeBD84qQz8fEPJPA%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1767193199%26allow_ip%3D%26allow_referer%3D%26signature%3DeFlr16YKxRGoPCPExtzzZxTH4K4%253D)
![[Python] 문자열 정렬하기 - ljust, center, rjust 글의 미리보기 사진](https://img1.daumcdn.net/thumb/R100x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fr1luQ%2Fbtq5XavZ26X%2FAAAAAAAAAAAAAAAAAAAAANbsLmS2QMsxY6VJ-L_Yh4795Wcq7G8hh41Hk5j5ru8G%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1767193199%26allow_ip%3D%26allow_referer%3D%26signature%3DfHG2FK1XLPhaW1aoeecagD1KUXE%253D)
![[Python] 몫과 나머지 ( // , % , divmod()) 글의 미리보기 사진](https://img1.daumcdn.net/thumb/R100x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FxMyY7%2Fbtq5RuvW0gU%2FAAAAAAAAAAAAAAAAAAAAAMeoV7pGKICicURK5ue1Srzb0QAWAkoxhJTNIgogW7FE%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1767193199%26allow_ip%3D%26allow_referer%3D%26signature%3DQdSIhsQGkUsA1c1XaON%252FZUr7cXE%253D)