Tech/Python

[python] 2진수, 8진수, 16진수 변환

lonnie(동현) 2020. 12. 24. 15:49

 python 은 기본적으로 10진수 이기 때문에 다른 진수의 경우에는 아래와 같이 접두어가 붙게 됩니다.

진수 표현
2진수 0b
8진수 0o
16진수 0x

10진 수에서 다른 진수로 변환

bin(), oct(), hex() 내장 함수의 사용

n = 10

# 2진수
b = bin(n)
print(b) 

## 출력 값 : 0b1010

# 8진수
o = oct(n)
print(o)

## 출력 값 : 0o12

# 16진수
h = hex(n)
print(h)

## 출력 값 : 0xa
  • 출력 값은 모두 srt로 출력됩니다.
  • 각각의 출력 값에 접두어가 붙어서 출력되는 것을 볼 수 있습니다.

format() 내장 함수의 사용

n = 10

# 2진수
b = format(n, '#b')
print(b) 

## 출력 값 : 0b1010

# 8진수
o = format(n, '#o')
print(o)

## 출력 값 : 0o12

# 16진수
x = format(n, '#x')
print(x)

## 출력 값 : 0xa
  • 출력 값은 모두 srt로 출력됩니다.
  • format 함수를 사용했을 때도, 위의 결과와 동일한 결과를 얻을 수 있습니다.
  • 조금 다른 점은 16진수에서 'h' 가 아니라 'x'를 사용한다는 점입니다.
  • 만약 접두어를 제외해서 출력하고 싶다면, 아래와 같이 ' # '을 제외하고 사용하면 됩니다.
n = 10

# 2진수
b = format(n, 'b')
print(b) 

## 출력 값 : 1010

# 8진수
o = format(n, 'o')
print(o)

## 출력 값 : 12

# 16진수
x = format(n, 'x')
print(x)

## 출력 값 : a
  • 16진수의 출력 값을 대문자로 얻고 싶다면. upper()를 통해 대문자로 바꿔주면 됩니다.
  • 반대로, 대문자가 출력되었는데 소문자를 얻고 싶다면. lower()을 사용하면 됩니다.
# 16진수
x = format(n, 'x')
print(x.upper())

## 출력 값 : A

x = format(n, 'x')
print(x.lower())

## 출력 값 : a

문자열. format() 사용

n = 10

# 2진수
b = "{0:#b}".format(n)
print(b) 

## 출력 값 : 0b1010

# 8진수
o = "{0:#o}".format(n)
print(o)

## 출력 값 : 0o12

# 16진수
x = "{0:#x}".format(n)
print(x)

## 출력 값 :0xa

다른 진수에서 10진수로 변환

  • 이번엔 2진수, 8진수, 16진수를 10진수로 변환하는 방법입니다.
  • 2, 8, 16 진수는 문자형이고, 반환되는 10진수 출력 값은 정수형이 됩니다.
  • 형식은 아래와 같이, int ('반환하고자 하는 수', 반환하고자 하는 진수)의 형식을 가집니다.
# 2진수
b = int('0b1010', 2)
print(b) 

# 8진수
o = int('0o12', 8)
print(o) 

# 16진수
x = int('0xa', 16)
print(x) 

## 출력 값 : 10

다른 진수에서 다른 진수로 변환

문자열. format()을 사용

  • 2진수에서 8, 10, 16 진수로 변환한 예시입니다.
n = 0b1010

# 2진수 -> 8진수
o_2 = "{0:#o}".format(n)
print(o_2) 

## 출력 값 : 0b1010

# 2진수 -> 10진수
d_2 = "{0:#d}".format(n)
print(d_2)

## 출력 값 : 0o12

# 2진수 -> 16진수
x_2 = "{0:#x}".format(n)
print(x_2)

## 출력 값 :0xa
  • 8진수에서 2, 10, 16 진수로 변환한 예시입니다.
n = 0o12

# 8진수 -> 2진수
o_8 = "{0:#b}".format(n)
print(o_8) 

## 출력 값 : 0b1010

# 8진수 -> 10진수
d_8 = "{0:#d}".format(n)
print(d_8)

## 출력 값 : 10

# 8진수 -> 16진수
x_8 = "{0:#x}".format(n)
print(x_8)

## 출력 값 :0xa
  • 16진수에서 2, 10, 8 진수로 변환한 예시입니다.
n = 0xa

# 16진수 -> 2진수
o_16 = "{0:#b}".format(n)
print(o_16) 

## 출력 값 : 0b1010

# 16진수 -> 10진수
d_16 = "{0:#d}".format(n)
print(d_16)

## 출력 값 : 10

# 16진수 -> 8진수
x_16 = "{0:#o}".format(n)
print(x_16)

## 출력 값 :0o12

str(), oct(), hex(), bin() 내장 함수 사용

  • 2진수에서 8, 10, 16 진수로 변환한 예시입니다.
n = 0b1010

# 2진수 -> 8진수
o_2 = oct(n)
print(o_2) 

## 출력 값 : 0o12

# 2진수 -> 10진수
s_2 = str(n)
print(s_2)

## 출력 값 : 10

# 2진수 -> 16진수
h_2 = hex(n)
print(h_2)

## 출력 값 : 0xa
  • 8진수에서 2, 10, 16 진수로 변환한 예시입니다.
n = 0o12

# 8진수 -> 2진수
o_8 = bin(n)
print(o_8) 

## 출력 값 : 0b1010

# 8진수 -> 10진수
s_8 = str(n)
print(s_8)

## 출력 값 : 10

# 8진수 -> 16진수
h_8 = hex(n)
print(h_8)

## 출력 값 : 0xa
  • 16진수에서 2, 8, 10 진수로 변환한 예시입니다.
n = 0xa

# 16진수 -> 2진수
o_16 = bin(n)
print(o_16) 

## 출력 값 : 0b1010

# 16진수 -> 8진수
h_16 = oct(n)
print(h_16)

## 출력 값 : 10

# 16진수 -> 10진수
s_16 = str(n)
print(s_16)

## 출력 값 : 0xa
728x90
반응형

'Tech > Python' 카테고리의 다른 글

[python] 소수점 이하 자릿수 포함 출력 방법  (0) 2020.12.24
[python] count 함수  (2) 2020.12.20
[python] random 함수  (0) 2020.12.20
[python] 재귀 함수  (0) 2020.12.17
[python] decimal 모듈  (0) 2020.12.17