728x90
Pyhton 진법 변환
n진수 → 10진수
* 결과값은 모두 string
* python에서는 기본적으로 int() 라는 함수를 지원한다
>> int(string, base)
위와 같은 형식으로 사용. base에는 진법을 넣으면 된다.
print(int('101',2))
print(int('202',3))
print(int('303',4))
print(int('404',5))
print(int('505',6))
print(int('ACF',16))
20
51
104
185
2767
10진수로 변경이 가능하다.
10진수 → 2, 8, 16진수
2, 8, 16진수는 bin(), oct(), hex() 함수를 지원한다.
print(bin(11))
print(oct(11))
print(hex(11))
0b1011
0o13
0xb
0b는 2진수, 0o는 8진수, 0x는 16진수를 의미한다.
진법 표시를 지울려면 [2:]를 하면 된다.
print(bin(11)[2:])
print(oct(11)[2:])
print(hex(11)[2:])
1011
13
b
10진수 → n진수
int 같은 함수가 없기 때문에 코드작성이 필요하다
def solution(n, q):
rev_base = ''
while n > 0:
n, mod = divmod(n, q) n을 p으로 나눈 몫과 나머지
rev_base += str(mod)
return rev_base[::-1]
# 역순인 진수를 뒤집어 줘야 원래 변환 하고자하는 base가 출력
print(solution(45, 3))
# divmod() : 몫과 나머지를 리턴. 리턴 값이 2개이므로 튜플을 사용.
# int(x, base) : base 진법으로 구성된 str 형식의 수를 10진법으로 변환해 줌
1200
n진수 → n진수
위에 썻던것들을 활용해서 n진수를 10진수로 변경하고 다시 n진수로 변경하면 된다.
print(solution(int('c',16),4)) # 16진수인 C를 4진수로 바꾸는것
print(solution(int('4',6),3)) # 6진수인 4를 3진수로 바꾸는것
print(solution(int('21',3),7)) # 3진수인 21을 7진수로 바꾸는것
print(solution(int('15',9),5)) # 9진수인 15를 5진수로 바꾸는것
30
11
10
24
728x90
'Python' 카테고리의 다른 글
[Python] - 리스트 값 삭제 clear, pop, remove, del (0) | 2023.02.03 |
---|---|
[Python] - 문자열(string) <-> 리스트(list) 변환 (0) | 2023.02.03 |
[Python] - 파이썬 리스트 슬라이싱 (0) | 2023.01.29 |
[Python] 자료구조 : 덱(deque()) 개념 및 사용 (0) | 2023.01.29 |
[python] 삼항연산자 ( if-else 삼항표현식 ) - if 조건식을 한줄로 표현 (0) | 2023.01.29 |