<개인공부>/[Python]

[python] 파이썬 진수 변환 hex, oct, bin

BlockDMask 2020. 10. 8. 00:30
반응형

안녕하세요. BlockDMask 입니다.

오늘은 파이썬의 진수 변환에 대해서 알아보려고 합니다.
간단하게 10진수를 oct 내장 함수(8진수 변환), hex 내장 함수(16진수 변환), bin 내장 함수(2진수 변환)에 대해서 이야기 해보고, 각 예제별로 다시 각 진수로 변환된 값을 어떻게 10진수로 되돌리는지에 대해서 까지 알아보겠습니다.

<목차>
1. python hex (16진수)
2. python oct (8진수)
3. python bin (2진수)
4. python int (x, 진수)


1. 파이썬 16진수 변환 hex 함수


hex(x) 함수 ?
해당 함수는 매개변수 x에 정수 값을 입력 받아서 16진수로 변환하여, 변환한 값을 반환하는 함수 입니다.

16진수 라는것은 영어로 하면 hexadecimal 인데, 이 영어중 맨 앞에 알파벳 세개 hex를 따서 함수 이름으로 만든것 입니다. 이제 기억하기 쉽겠죠?

16진수 표현임은 맨 앞에 접두사로 '0x' 가 붙어있으면 16진수임을 뜻합니다.
예를들어 hex(5)은 10진수 5가 매개변수로 들어가고 5에 해당하는 16진수값을 반환합니다. '0x5' 를 반환하겠죠?

중요한것은 데이터 타입입니다. 16진수 데이터 타입이 따로 있는게 아니라 10진수로 표현된 integer 값을 16진수로 바꿔서 문자열 타입으로 변환을 합니다.
hex(10)의 반환형'0xa'인 문자열(스트링 타입) 입니다.


hex(x) 함수 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 파이썬 16진수 변환 hex(x) 함수 예제
 
# hex(10)
= hex(10)
print(f'1. hex(10) = {a}')
 
# hex(145)
= hex(145)
print(f'2. hex(145) = {b}')
 
# a와 b의 데이터 타입은 뭘까요?
print(f'3-1. type(hex(10)) = {type(a)}')
print(f'3-2. type(hex(145)) = {type(b)}')
 
# 16진수 값을 다시 10진수 int로 변환
# int 내장 함수에 첫번째 인자에는 바꿀 수를 집어 넣고
# 두번째 인자에는 해당 값의 진수를 넣습니다.
= int(a, 16)
= int(b, 16)
print(f'4-1. 16진수 : {a} -> 10진수 : {c}')
print(f'4-2. 16진수 : {b} -> 10진수 : {d}')
 
cs

결과

예제 1,2
10진수 10과 145가 '0x'로 표현된 16진수로 잘 변환 된 것을 볼 수 있습니다.

예제 3-1, 3-2
16진수로 변환된 값의 데이터 타입은 str 즉 문자열임을 확인할 수 있습니다.

예제 4-1, 4-2
16진수로 표현된 문자열 데이터 타입을 10진수 숫자로 변환하는 방법은 아래와 같습니다.
int() 내장함수를 이용하게 되는데요.
첫번째 인자로는 바꿀 16진수를 집어 넣습니다.
두번쨰 인자로는 첫번째에 집어넣은 데이터의 진수값을 넣습니다. 지금같은경우에는 16진수 이기 때문에 16을 넣습니다.
정리하자면 이렇게 되겠죠 int('0xa', 16) 
이렇게 값을 넣으면 int 함수는 이렇게 받아드립니다.

"니가 첫번째 인자로 넣은 문자열이 16진수로 이루어져 있구나 그럼 0x로 시작하고 뒤에는 숫자가 오네? 그걸 내가 10진수로 변환해서 반환해줄게"

그래서 저희는 16진수 string 타입의 값을 -> int(x, 16) 를 통해 -> 10진수 integer 타입값으로 변환하여 반환 받을 수 있습니다.



2. 파이썬 8진수 변환 oct 함수


oct(x) 함수?
해당 함수는 매개변수 x에 정수 값을 입력 받아서 8진수로 변환하여, 변환한 값을 반환하는 함수 입니다.

8진수를 영어로 하면 octal number 라고 합니다. 그중 앞에 알파벳 세글자를 따서 oct(x)라는 함수로 만들었습니다.

8진수 표현임은 맨 앞에 접두사로 '0o' 가 붙어있으면 8진수임을 뜻합니다.
oct의 o가 들어가있다고 생각하면 기억하기 쉬울 것 입니다.

예를들어 oct(4)은 10진수 4가 매개변수로 들어가고 4에 해당하는 8진수값을 반환합니다. '0o4' 를 반환하겠죠?

이번에도 중요한것은 데이터 타입 입니다. 8진수 데이터 타입이 따로 있는게 아니라 10진수로 표현된 integer 값을 8진수로 바꿔서 문자열 타입으로 변환을 합니다.
 oct(10)의 반환형 '0x12'인 문자열(스트링 타입) 입니다.


oct(x) 함수 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 파이썬 8진수 변환 oct(x) 함수 예제
 
# oct(10)
= oct(10)
 
print(f'1-1. oct(10) = {a}')
 
# oct(233)
= oct(233)
 
print(f'1-2. oct(233) = {b}')
 
# a와 b의 데이터 타입은 뭘까요?
print(f'2-1. type(oct(10)) = {type(a)}')
print(f'2-2. type(oct(233)) = {type(b)}')
 
# 8진수 스트링을 다시 10진수 int로 변환
= int(a, 8)
= int(b, 8)
 
print(f'3-1. 8진수 : {a} -> 10진수 : {c}')
print(f'3-2. 8진수 : {b} -> 10진수 : {d}')
 
cs

결과

예제 1-1, 1-2
10진수 숫자 10과 233 '0o'로 표현된 8진수 스트링으로 잘 변환되어서 출력 되는걸 볼 수 있습니다.

예제 2-1, 2-2
숫자에서 8진수로 변환된 값의 데이터 타입은 str 즉 문자열임을 확인할 수 있습니다. 정확하게 말하면 8진수 형태로 표현된 문자열 이라 할 수 있습니다.

예제 3-1, 3-2
8진수로 표현된 문자열 데이터 타입을 10진수 숫자로 변환하는 방법은 아래와 같습니다.
int() 내장함수를 이용하게 되는데요.
첫번째 인자로는 바꿀 8진수 형태의 문자열을 넣고,
두번째 인자로는 첫번째에 집어넣은 데이터의 진수값을 넣습니다. 지금 같은 경우에는 8진수 이기 때문에 8을 넣습니다.

정리하자면 이렇게 되겠죠 int('0o12', 8) 

이렇게 저희는 8진수 string 타입의 값을 -> int('0o12', 8) 를 통해 -> 10진수 integer 타입의 값으로 변환하여 반환 받을 수 있습니다.


3. 파이썬 2진수 변환 bin 함수


bin(x) 함수?
해당 함수는 매개변수 x에 정수 값을 입력 받아서 2진수로 변환하여, 변환한 값을 반환하는 함수 입니다.

2진수를 영어로 하면 binary number 입니다. 그중 앞에 알파벳 세글자를 따서 bin(x)라는 함수로 만든거겠죠?

2진수 표현임은 맨 앞에 접두사로 '0b' 가 붙어있으면 2진수임을 뜻합니다.
bin의 b가 들어가있다고 생각하면 기억하기 쉬울 것 입니다.

예를들어 bin(3)은 10진수 3이 매개변수로 들어가고 3에 해당하는 2진수값을 반환합니다. '0b11' 를 반환하겠죠?

이번에도 중요한것은 데이터 타입 입니다. 2진수 데이터 타입이 따로 있는게 아니라 10진수로 표현된 integer 값을 2진수로 바꿔서 문자열 타입으로 변환을 합니다.
bin(10)의 반환형은 '0b1010'인 문자열(스트링 타입) 입니다.


bin(x) 함수 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 파이썬 2진수 변환 bin(x) 함수 예제
 
# bin(10)
= bin(10)
 
print(f'1-1. bin(10) = {a}')
 
# bin(301)
= bin(301)
 
print(f'1-2. bin(301) = {b}')
 
# a와 b의 데이터 타입은 뭘까요?
print(f'2-1. type(bin(10)) = {type(a)}')
print(f'2-2. type(bin(301)) = {type(b)}')
 
# 2진수 스트링을 다시 10진수 int로 변환
= int(a, 2)
= int(b, 2)
 
print(f'3-1. 2진수 : {a} -> 10진수 : {c}')
print(f'3-2. 2진수 : {b} -> 10진수 : {d}')
 
cs

결과

예제 1-1, 1-2
10진수 숫자 10과 302을 2진수로 바꿔보았습니다.
'0b'로 표현된 2진수 문자열으로 출력되는걸 확인할 수 있습니다.

예제 2-1, 2-2
10진수 숫자에서 2진수로 변환된 값의 데이터 타입은 str 즉 문자열임을 확인할 수 있습니다.

예제 3-1, 3-2
2진수로 표현된 문자열 데이터 타입을 10진수 숫자로 변환하는 방법은 아래와 같습니다.
int() 내장함수를 이용하면 됩니다.
첫번째 인자로는 바꿀 2진수 형태의 문자열을 넣고, 
두번째 인자로는 첫번째에 집어넣은 데이터의 진수값을 넣습니다. 지금 같은 경우에는 2진수 이기 때문에 2을 넣습니다.

정리하자면 이렇게 되겠죠 int('0b1010', 2) 

이렇게 저희는 2진수 string 타입의 값을 -> int('0b1010', 2) 를 통해 -> 10진수 integer 타입의 값으로 변환하여 반환 받을 수 있습니다.



4. 파이썬 10진수 변환 int 함수의 첫번째 인자와 두번째 인자.


이미 위 예제에서 보셨겠지만. 총정리가 필요할것 같아서 마지막에 이렇게 4번 항목을 만들어 보았습니다.

int(x, y) 함수?
첫번째 인자 x에는 각 진수의 타입에 맞는 문자열을 집어 넣습니다.
두번째 인자 y에는 첫번째 인자의 해당 문자열의 진수를 숫자로 넣습니다.

예를들어
16진수 "0xa"를 10진수로 바꾸려 한다면 int("0xa", 16)을 넣습니다.
8진수 "0o12"를 10진수로 바꾸려 한다면 int("0o12" 8)을 넣습니다.
2진수 "0b1010"을 10진수로 바꾸려 한다면 int("0b1010", 2)를 넣습니다.


int(x, y) 함수 예제

1
2
3
4
5
6
7
8
9
# 파이썬 2진수, 8진수, 16진수를 10진수로 변환
= int("0xa"16)
= int("0o12"8)
= int("0b1010"2)
 
print(f'1. 16진수 -> 10진수로 : "0xa"    -> 10진수 : {a}')
print(f'2.  8진수 -> 10진수로 : "0o12"   -> 10진수 : {b}')
print(f'3.  2진수 -> 10진수로 : "0b1010" -> 10진수 : {c}')
 
cs

결과


이렇게 파이썬에서 8, 2, 16진수와 10진수 사이를 변환하는 방법에 대해서 다 알아보았습니다. 감사합니다. 

반응형