[Python] 진법 변환

lea_hwang·2022년 3월 23일
0

프로그래밍

목록 보기
1/1

10진수를 변환

format()

format() 함수를 이용하면 10진수를 각각 2진수, 8진수, 16진수로 변환시킬 수 있다.
변환 후, str 형태로 반환해준다.

N = 10 # 10진수

B = format(N,'b') 	# 2진수
O = format(N,'o') 	# 8진수
X = format(N,'x') 	# 16진수

print(B, O, X) 		# 1010 12 a

fstring

fstring을 이용하면 10진수를 각각 2진수, 8진수, 16진수로 변환시킬 수 있다.
변환 후, str 형태로 반환된다.

val10 = 10 # 10진수

val2 = f'{val10:024b}' # 2진수로 변환

b: 2진수, o는 8진수, x는 16진수로의 변환을 의미한다.
24는 전체 진수의 길이를 의미한다.(2242^{24})
0은 만약 24자리가 다 채워지지 않을 경우 0을 앞에 채우는 것을 의미한다.

bin(), oct(), hex()

bin(), oct(), hex()는 각각 2진수, 8진수, 16진수로 변환시킨다
결과값은 str형태로 반환된다.

print(bin(25)) 	# 0b11001
print(oct(25)) 	# 0o31
print(hex(25)) 	# 0x19

10진수로 변환

int()

int() 함수를 이용하면 2진수, 8진수, 16진수를 10진수(정수형)으로 변환시킬 수 있다. base값을 2, 8, 16으로 지정해야한다.

# 2진수, 8진수, 16진수 25를 10진수 25로 변환
print(int('0b11001', 2)) 	# 25
print(int('0o31', 8))		# 25
print(int('0x19', 16))		# 25
print(int('0x19', base=16)) # 25

내가 만든 진법 변환기

16진수를 2진수로 변환

def form16to2(n_16): # string 형태로 숫자가 들어옴
    n_2 = ""

    # 16진수를 10진수로 변환
    if n_16.isdigit(): # 0~9이면
        n_10 = int(n_16)
    else:
        n_10 = 10 + ord(n_16) - ord("A")

    # 10진수를 2진수로 변환
    for i in range(3, -1, -1):
        if 1<<i & n_10:
            n_2 += "1"
        else:
            n_2 += "0"

    return n_2
profile
끊임없이 도전하는 개발자, 황희원입니다 :)

0개의 댓글