본문 바로가기
프로그래밍 언어/파이썬

[Python] N진수 변환

by 컴공맨 2021. 2. 28.

2진수

format()

format()을 사용하여 이진수로 변환이 가능합니다. 이때, 변환 결과로 0bxxxx... 형태로 나오게 되므로 0b를 없에는 처리를 해주어야 합니다.

# 방법 1
binary_str1 = "{0:b}".format(arr1[i] | arr2[i])

# 방법 2
binary_str2 = format(arr1[i] | arr2[i], 'b')

bin()

bin()을 사용하여 이진수로의 변환이 가능합니다. bin()의 변환 결과도 0bxxxx... 형태로 나오기 때문에 0b를 없에줘야 합니다.

binary_str = str(bin(arr1[i] | arr2[i]))[2:]

zfill(), rjust()

format()과 bin()의 결과로 n개의 비트를 가진 이진수를 만들때 비트의 앞이 0으로 되어있으면 0을 지우고 1인 부분부터 문자열로 변환되기 때문에(e.g. 4비트 3(10진수) -> 0011(2진수) 가 아닌 11(2진수) 가 됩니다.) 만약 n개의 비트를 만들기 위해 앞부분의 0을 채워야한다면 zfill()과 rjust()을 사용하는 방법이 있습니다. 

# 방법 1
binary_str1 = "{0:b}".format(arr1[i] | arr2[i]).zfill(n)

# 방법 2
binary_str2 = format(arr1[i] | arr2[i], 'b').rjust(n, '0')

# 방법 3
binary_str3 = str(bin(arr1[i] | arr2[i]))[2:].rjust(n, '0')

# 방법 4
binary_str4 = str(bin(arr1[i] | arr2[i]))[2:].zfill(n)

N진수

def convert(num, base):
    temp = "0123456789ABCDEF"
    q, r = divmod(num, base)

    if q == 0:
        return temp[r]
    else:
        # q를 base로 변환
        # 즉, n진수의 다음 자리를 구함
        return convert(q, base) + temp[r]

 

'프로그래밍 언어 > 파이썬' 카테고리의 다른 글

[Python] 문자열을 일정 길이로 자르기  (0) 2021.03.14
[Python] count()  (0) 2021.03.06
[Python] dict 정렬  (0) 2021.03.06
[Python] itertools cycle()  (0) 2021.02.12
[Python] collections.Counter  (0) 2021.02.07