[Python] n진수 변환

Seohyun·2022년 4월 21일
0

Python Basic

목록 보기
3/4

파이썬에서 지원하는 진수 변환 라이브러리

2진수8진수16진수
bin()oct()hex()
>>> print(bin(11))
	 0b1011
>>> print(oct(11))
	 0o13
>>> print(hex(11))
	 0xb
  • 위의 라이브러리를 사용했을 때, 앞에 붙는 '0b', '0o', '0x'는 2진수, 8진수, 16진수를 나타내므로 우리가 알고있는 2진수, 8진수, 16진수와 같이 표현하기 위해서는 3번째 자리부터 슬라이싱해서 나타내주면 된다.
    bin(11)[2:] , oct(11)[2:] , hex(11)[2:] 와 같이 작성하면 1011, 13 , b 와 같이 출력된다.

파이썬에서 지원하지 않는 진수 변환은 어떻게 처리할까 ?

➡ 직접 코드 작성하여 10진수에서 n진수 변환 해야한다.

# x는 나누고자 하는 수
# n는 진수 변환 하고자 하는 수
def solution(x, n):
	answer = ''

    while x > 0:
    	x, mod = divmod(x, n)
        answer += str(mod)

    return answer[::-1]

 print(solution(11,3))

n진수 → 10진수

  • int(value, n) 라이브러리 이용
  • 이때 value는 문자열 형태로 진수 변환해야 되는 수를 넣어주고, n은 n진수에서 10진수로 변환할 수를 넣어준다.
>>> int('101', 2)
	 5
>>> int('202', 3)
	 20
>>> int('303', 4)
	 51
>>> int('404', 5)
	 104

n진수 → n진수

  • n진수 → 10진수 → n진수로 진행해야 한다.
>>> solution(int('202', 3), 4)
	 110

n진수 자릿수 맞추기 (rjust()이용)

  • 코딩테스트를 공부하다보면, 앞에 0을 채워 자릿수를 채워야하는 경우가 있다.
  • 이때 rjust(길이, 채울문자)를 이용하여 구현할 수 있다.
>>> bin(1)[2:]
	1
>>> bin(1)[2:].rjust(5, '0')
	00001

➰ References

https://url.kr/lk4haj

0개의 댓글