Python
2진수, 8진수, 10진수, 16진수
파이썬은 10진수를 기본으로 한다. 때문에 다른 진수들의 수와 차별을 두기위해 각 진수의 수 앞에 아래 두 글자를 붙여 표현한다.
2진수 : 0b
8진수 : 0o
16진수 : 0x
1) 10진수 -----변환-----> 2진수, 8진수, 16진수
1. 파이썬 자체 내장함수 이용
영어의 앞 3글자에서 따온 함수명
2진수 : Binary
8진수 : Octal
16진수 : Hexadecimal
bin(value) : 10진수 ---> 2진수 변환
oct(value) : 10진수 ---> 8진수 변환
hex(value) : 10진수 ---> 16진수 변환
반환값 : 모두 문자열
value = 100
B = bin(100)
O = oct(100)
H = hex(100)
print(B)
print(O)
print(H)
print(type (B))
print(type (O))
print(type (H))
2. format() 함수 이용
format(value, '#b') : 10진수 ---> 2진수 변환
format(value, , '#o') : 10진수 ---> 8진수 변환
format(value, '#x') : 10진수 ---> 16진수 변환
10진수를 2,8,16진수로 바꾸는 두 가지 방법의 차이는 두 번째 방법은 #를 제거하면 수 앞에 붙었던
2진수 : 0b
8진수 : 0o
16진수 : 0x
요 문자들을 삭제한 문자열 값을 반환한다.
반환값 : 모두 문자열
value = 100
B = format(100, '#b') # 10진수 -> 2진수
O = format(100, '#o') # 10진수 -> 8진수
H = format(100, '#x') # 10진수 -> 16진수
print(B)
print(O)
print(H)
print(type (B))
print(type (O))
print(type (H))
B = format(100, 'b')
O = format(100, 'o')
H = format(100, 'x')
print(B)
print(O)
print(H)
print(type (B))
print(type (O))
print(type (H))
2) 2진수 -----변환-----> 8진수, 10진수, 16진수
각 변환하는 것도 위의 문법처럼 똑같이 하면 된다.
2진수, 8진수, 16진수를 ----> 10진수로 변환할 때는 str(value) / format(value,#s) 를 쓴다.
value = 0b1100100 #2진수의 값
print('----기본 함수로----')
O = oct(value) #8진수로
S = str(value) #10진수로
H = hex(value) #16진수로
print(O)
print(S)
print(H)
print(type (O))
print(type (H))
print(type (S))
print('----FORMAT 함수로----')
O = format(value, '#o') #8진수로
S = format(value, '#d') #10진수로
H = format(value, '#x') #16진수로
print(O)
print(S)
print(H)
print(type (O))
print(type (S))
print(type (H))
print('---#빼고 숫자만 출력(but 문자열임)---')
O = format(value, 'o') #8진수로
S = format(value, 'd') #10진수로
H = format(value, 'x') #16진수로
print(O)
print(S)
print(H)
print(type (O))
print(type (S))
print(type (H))
3) 8진수 -----변환-----> 2진수, 10진수, 16진수
8진수도 위와 동일하게 바꾸면 된다.
value = 0o144 #8진수의 값
print('----기본 함수로----')
B = bin(value) #8진수 -> 2진수로
S = str(value) #8진수 -> 10진수로
H = hex(value) #8진수 -> 16진수로
print(B)
print(S)
print(H)
print(type (B))
print(type (S))
print(type (H))
print('----FORMAT 함수로----')
B = format(value, '#b') #2진수로
S = format(value, '#d') #10진수로
H = format(value, '#x') #16진수로
print(B)
print(S)
print(H)
print(type (B))
print(type (S))
print(type (H))
print('---#빼고 숫자만 출력(but 문자열임)---')
O = format(value, 'b') #2진수로
S = format(value, 'd') #10진수로
H = format(value, 'x') #16진수로
print(B)
print(S)
print(H)
print(type (B))
print(type (S))
print(type (H))
4) 16진수 -----변환-----> 2진수, 8진수, 10진수
value = 0x64 #16진수의 값
print('----기본 함수로----')
B = bin(value) #16진수 -> 2진수로
O = oct(value) #16진수 -> 8진수로
S = str(value) #16진수 -> 10진수로
print(B)
print(O)
print(S)
print(type (B))
print(type (O))
print(type (S))
print('----FORMAT 함수로----')
B = format(value, '#b') #2진수로
O = format(value, '#o') #8진수로
S = format(value, '#d') #10진수로
print(B)
print(O)
print(S)
print(type (B))
print(type (O))
print(type (S))
print('---#빼고 숫자만 출력(but 문자열임)---')
B = format(value, 'b') #2진수로
O = format(value, 'o') #8진수로
S = format(value, 'd') #10진수로
print(B)
print(O)
print(S)
print(type (B))
print(type (O))
print(type (S))
기타 % 포매팅을 사용한 방식
* 요 값은 앞에 0x / 0o 값이 안붙는다.
10진수를 % 포매팅으로 사용하면 2진수 모두 오류, 8진수 %o 가능 %x 16진수 모두 가능했다.
input 받는게 16진수라면? int() 쓰는 법
n = int(a, 16) -> a가 16진수니까 고려해서 정수로 변환해 , 그리고 n 변수에 담아 ! 라는 뜻
2,8,16진수 제외하고 다른 진수로 바꾸는 방법
10진수 -----> n진수로 바꾸는 방법
1. while 사용
def solution(n):
tmp = ''
while n:
tmp = str(n%5)+tmp
n = n//5
print(int(tmp))
solution(10)
10진수를 5진수로 바꾸기
위의 코드 중 5의 자리에 2,3,4,5,6, ~ 진수를 넣고 실행하면 된다.
2. 함수 사용
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(10,5))
n 진수 --> 10진수로 바꾸는 방법
int('스트링 숫자', 바꿀 n진수) 를 사용하면 된다 !
#int(string, base) 사용 !
print(int('100',2))
print(int('200',3))
print(int('300',4))
print(int('400',5))
print(int('500',6))
print(int('eee',16))
** 주의사항 : 위의 모든 예시의 반환되는 모든 값은 문자열 !
'Python > Python 공부 정리' 카테고리의 다른 글
[Python]파이썬, 왜 리스트대신 큐/ 데크 deque 를 쓸까? (0) | 2021.06.17 |
---|---|
[Python] 전역 변수 지역 변수 사용법 총 정리/ global, nonlocal (2) | 2021.06.13 |
[Python] 파이썬 문자열 공부 (0) | 2021.06.10 |
[Python] 파이썬 리스트 [::] 사용법 예제 extended slices (0) | 2021.06.09 |
[Python] 최소공배수, 최대공약수란? 파이썬 알고리즘으로 쉽게 구현하기 / for문, 유클리드 호제법 이용 (4) | 2021.06.03 |
댓글