Python
[Python] 2진수, 8진수, 16진수 다루기
shur_
2025. 2. 6. 19:51
🚩각 진수 표현
- 2진수 : 0b
- 8진수 : 0o
- 16진수 : 0x
42 == 0b101010 #True
42 == 0o52 #True
42 == 0x2a #True
해당 진수에서 허용하는 범위를 벗어난 값을 사용하면 SyntaxError 발생.
>>> 0b2
File "<stdin>", line 1
0b2
^
SyntaxError: invalid token
🚩숫자에서 다른 진수 문자열로 변환하기
파이썬은 bin(), oct(), hex() 내장 함수를 지원함.
이 함수들을 통해서 십진수 숫자를 다른 진수의 문자열 표현으로 변환 가능.
>>> bin(42)
'0b101010'
>>> oct(42)
'0o52'
>>> hex(42)
'0x2a'
함수의 인자로 숫자를 넘길 때 십진수, 2진수, 8진수, 16진수 표현법만 지키면 뭐든 가능.
같은 값을 다른 진수의 표현 방식으로 나타낸 것이기 때문.
>>> bin(0b101010)
'0b101010'
>>> oct(0b101010)
'0o52'
>>> hex(0b101010)
'0x2a'
>>> str(0b101010)
'42'
🚩다른 진수의 문자열을 숫자형으로 변환하기
int() 함수에 다른 진수의 값을 추가 인자로 제공.
>>> int('0b101010', 2)
42
>>> int('0o52', 8)
42
>>> int('0x2a', 16)
42
int() 함수의 기본 인자 값이 10이기 때문에 평소 int()를 사용하면 10진수 정수로 변환됨.
>>> int('42', 10)
42
>>> int('42')
42
🚩 format() 활용하기
>>> format(42, 'b')
'101010'
>>> format(42, 'o')
'52'
>>> format(42, 'x')
'2a'
>>> format(42, 'X')
'2A'
>>> format(42, 'd')
'42'
변환 문자열 앞에 접두어 붙이기
>>> format(42, '#b')
'0b101010'
>>> format(42, '#o')
'0o52'
>>> format(42, '#x')
'0x2a'
>>> format(42, '#X')
'0X2A'
>>> "int: {0:d}, bin: {0:b}, oct: {0:o}, hex: {0:x}".format(42)
'int: 42, oct: 52, bin: 101010, hex: 2a'
>>>f"int: {42:d}, bin: {42:b}, oct: {42:o}, hex: {42:x}"
'int: 42, oct: 52, bin: 101010, hex: 2a'